2017-08-23 11 views
0

id_branchがPKで新しいレコードを挿入した場合、id_itemはPK &あるヌルデータを更新FKupdateOrCreate()たとえば、データベースに存在していただけ

$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にコピーします。存在する場合は、別のものを更新します。レコードを挿入することはできますが、更新すると値はnullになります。私のコードに間違いがありますか?

+0

ようなコードは、ここでは、( 'id_branch'、 'B')のような条件を持っている - >( 'id_item'、$ from_item-> id_item)。同じ条件で利用可能なレコードはありますか?どの値がNULLになるか? –

+0

レコードが利用可能です。ブランチAは5つのレコードで構成され、ブランチBは2つのレコードで構成され、updateOrCreate()を使用するとブランチBには3つのレコードが追加されます。 Cと呼ばれる別のブランチがあり、ブランチBと同じレコードを持っているとしましょう。ブランチCと同じレコードをブランチBに更新したいときは、コードを実行するとすべてがnull値に設定されます。 – Crazy

+0

支店C - id_product - 7、備考 - 支店Bの間のabc - 備考 - 私はコードを実行すると、支店Bの備考は支店Cと同じでなければならないが、それはnull値として設定されます。 – Crazy

答えて

0

updateOrCreateメソッドは2つのパラメータをとります。最初のものは条件で、もう1つは更新または作成するデータです。あなたのケースでは

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 
     ] 
    ); 
+0

同じ結果が出ません。 – Crazy

+0

は 'id_branch'と' id_item'は 'Category'モデルの' $ fillable'配列の中にありますか?どの属性がnullとして保存されていますか? – Aboudeh87

+0

はい、更新されるすべての属性はnullに設定されます。例備考 – Crazy

関連する問題