我想更新一对多关系。例如我有一个名为Product
class Product extends Model
{
protected $primaryKey = 'product_id';
public $timestamps = FALSE;
public function Size(){
return $this->hasMany('App\Size');
}
}
和一个名为Size
class Size extends Model
{
public $timestamps = FALSE;
protected $fillable = ['product_id','size'];
public function Product(){
return $this->belongsTo('App\Product');
}
这是我的控制器:
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 的所有尺寸记录更新为最后输入者的尺寸。我想用所选的不同尺寸而不是最后选择的尺寸更新所有尺寸
如何更新特定产品的尺寸。像多对多关系的同步方法一样,有没有办法更新记录。
You override your $array
在循环。 for 循环之后,$array
可能有最后的尺寸。
一般来说,您的查询是正确的,但它与执行位置有关。它应该像下面这样:
if (isset($request->$selectedSize)) { // or is_int() ?
$Size = Size::where('product_id', $request->id)->update(['size'=> $request->$selectedSize]);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)