2 つのテーブルから 2 セットのデータを取得し、それぞれ $malls と $mall_tems に保存します
次に、2 つの配列を走査して比較する必要があります。記録された color_id と size_id が同じである場合は、$ の価格値を取り出します。フィールドに $malls_tem の価格で保存します
現在、次の foreach ループを使用していますが、失敗します。何が間違っているのかを見つけるのを手伝っていただけますか。
foreach($mall_tems as $mall_tem){ // 使用的 Laravel,$current_mall 就代表获取当前循环的数据吧。 $current_mall = find($mall_tem->id); foreach($malls as $mall) { if($mall_tem->color_id == $mall->color_id && $mall_tem->size_id == $mall->size_id) { $current_mall->price = $mall->price; }else{ $current_mall->price = '129.00'; } }}
$current_mallの意味が不明瞭以外は問題なし
$current_mallの意味が不明瞭以外は問題なし
$current_mall は単一のオブジェクトであり、常に内側のループに代入されます
コードを省略するときに重要なポイントを省略しているため、$current_mall->save() が実行される場所です
なので、明確には何も言えません
一般的な慣例によれば、不一致がある場合には値を代入する必要があるため、$current_mall には初期値があることが理解できます
$current_mall->price = '129.00'; foreach($malls as $mall) { if($mall_tem->color_id == $mall->color_id && $mall_tem->size_id == $mall->size_id) { $current_mall->price = $mall->price; break; //匹配到就结束 } } $current_mall->save();
$current_mall は単一のオブジェクトであり、常に内側のループで代入されます
$current_mall->save() がどこで実行されるかという重要な部分を省略しているため
、明確には言えません
一般的な慣行によると、実行時に値が割り当てられることもあるので、一致するものはありません。$current_mall には初期値があると理解できます
$current_mall->price = '129.00'; foreach($malls as $mall) { if($mall_tem->color_id == $mall->color_id && $mall_tem->size_id == $mall->size_id) { $current_mall->price = $mall->price; break; //匹配到就结束 } } $current_mall->save();