我想更新一对多关系。例如,我有一个名为"产品">的模型
class Product extends Model
{
protected $primaryKey = 'product_id';
public $timestamps = FALSE;
public function Size(){
return $this->hasMany('AppSize');
}
}
和一个名为 Size 的模型
class Size extends Model
{
public $timestamps = FALSE;
protected $fillable = ['product_id','size'];
public function Product(){
return $this->belongsTo('AppProduct');
}
这是我的控制器:
public function update(Request $request){
for($i = 1; $i <= $sizeCounter; $i++){
$selectedSize = "size_$i";
if($request->$selectedSize){
$array = ['size'=> $request->$selectedSize];
}
}
$Size = Size::where('product_id' , $request->id)->update($array);
}
但是它正在做什么,将具有所选产品ID的所有大小记录更新到最后一个输入者大小。我想用不同的尺寸而不是最后选择的尺寸更新所有尺寸
如何更新特定产品的尺寸。像多对多关系的同步方法一样,有什么方法可以更新记录。
你在循环中覆盖你的$array
。在 for 循环之后,$array
可能具有最后一个大小。
通常,您的查询是正确的,但它与执行位置有关。它应该如下所示:
if (isset($request->$selectedSize)) { // or is_int() ?
$Size = Size::where('product_id', $request->id)->update(['size'=> $request->$selectedSize]);
}