updateOrCreate()更新null数据(如果存在于数据库中)并且仅插入新记录

时间:2017-08-23 04:41:37

标签: laravel eloquent

id_branch是PK,id_item是PK& FK

 $id = B;
 $id_selected = A;

$from_category= Category::where('id_branch', $id_selected)->get();
foreach ($from_items as $from_item) {
    $test = Category::updateOrCreate(['id_branch' => $id,'id_item'=>$from_item->id_item], ['remarks' => $from_item->remarks]);
}

例如,用户将选择需要将哪个分支类别记录复制到当前分支类别。之后,将更新或从所选分支类别中的记录插入当前分支。将分支类别A记录复制到分支类别B.如果存在则更新else插入。我能够插入记录,但更新时该值将为null。我的代码出了什么问题?

1 个答案:

答案 0 :(得分:1)

updateOrCreate方法取2个参数,第一个是条件,第二个是要更新或创建的数据。

在您的情况下,如果分支中不存在ID,则会创建包含给定数据的新行但您未通过id_branchid_item第二个参数,我想解决这个问题你应该编写如下代码

    $test = Category::updateOrCreate(
        [
            'id_branch' => $id,
            'id_item'=>$from_item->id_item
        ],
        [
            'id_branch' => $id,
            'id_item'=>$from_item->id_item,
            'remarks' => $from_item->remarks
        ]
    );