从与另一个表匹配的数据更新表中的列

时间:2020-06-19 06:12:58

标签: php laravel

这是我的桌子

enter image description here

enter image description here

Desa / Dusun和kelurahan在两个表中的值相同,我想填写kodepos值

*请注意,这只是示例,其中包含大量数据

这是我的代码

public function updatekodepos()
{
    $data = DataPos::all();
    if ($data) {
        foreach ($data as $asep) {
            KodePos::where([
                'Desa/Dusun' => $asep->kelurahan, 'kodepos' => NULL
            ])->update(['kodepos' => $asep->kodepos]);
            return redirect('/');
        }
    } else {
        return 'data not found';
    }
}

模型datapos表示其中具有kodepos值的表,而kodepos模型表示具有空值的表, 我真正感谢的任何帮助,为此已经花了几个小时, 谢谢

1 个答案:

答案 0 :(得分:0)

您应该在结束循环后返回。当您在循环中返回时,它将在检查第一个数据后返回,无论是否匹配并更新。您应该在检查完所有数据后返回,因为它们在循环内。

public function updatekodepos()
{
    $data = DataPos::all();
    if ($data) {
        foreach ($data as $asep) {
            KodePos::where([
                'Desa/Dusun' => $asep->kelurahan, 'kodepos' => NULL
            ])->update(['kodepos' => $asep->kodepos]);
        }
        return redirect('/');
    } else {
        return 'data not found';
    }
}