簡體   English   中英

updateOrCreate在Laravel Eloquent中不起作用

[英]updateOrCreate does not work in Laravel Eloquent

我想更新或創建模型。 它根本不起作用。

這是我的代碼:

foreach ($ProfileRequest as $fieldname => $value){
    ProfileRequest::updateOrCreate(['sm_id' => $uid, 'field_name' => $fieldname],
        [
            'sm_id' => $uid,
            'field_name' => $fieldname,
            'value' => $value
        ]);
    }

這適用於插入:

 foreach ($ProfileRequest as $fieldname => $value) {
     $req = new ProfileRequest;
     $req->chef_id = $uid;
     $req->field_name = $fieldname;
     $req->value = $value;
     $req->save();
 }

由於您正在處理批量更新,因此需要在模型中指定可填寫字段。 把它放在你的模型上

protected $fillable = ['field_name','value'];

像這樣更改你的代碼

foreach ($ProfileRequest as $fieldname => $value){
    ProfileRequest::updateOrCreate(
        [
            'sm_id' => $uid
        ], 
        [
            'field_name' => $fieldname,
            'value' => $value
        ]
    );
}

避免重復這些字段。 如果以某種方式,我的代碼不適合你,請在這里查看功能定義: https//laravel.com/api/5.4/Illuminate/Database/Eloquent/Builder.html#method_updateOrCreate

這有效

foreach ($ProfileRequest as $fieldname => $value){
    ProfileRequest::firstOrNew(array('sm_id' => $uid, 'field_name' => $fieldname));
            $chefReq->sm_id = $uid;
            $chefReq->field_name = $fieldname;
            $chefReq->value = $value;
            $chefReq->save();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM