更新laravel中的一对多关系5.3 [英] Updateing One to many relation in laravel 5.3

查看:141
本文介绍了更新laravel中的一对多关系5.3的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想更新一对多关系。例如,我有一个名为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');
}

这是我的控制器



($ i $ 1 = $; $ i $ = $ sizeCounter; $ i ++){
$ selectedSize = size_ $ i
if($ request-> $ selectedSize){
$ array = ['size'=> $请求 - > $ selectedSize];
}
}
$ Size = Size :: where('product_id',$ request-> id) - > update($ array);

但是,将selectedd产品ID的所有大小记录更新为最后一个订阅者的大小。我想更新所有尺寸,不同尺寸的尺寸不是最后选择的尺寸。



如何更新特定产品的尺寸。像许多关系的同步方法有任何方式来更新记录。

解决方案

覆盖你的 $ array 在循环中。在for循环之后, $ array 可能是最后一个大小。



一般来说,你的查询是正确的,但是这是关于执行的地方。它应该如下所示:

  if(isset($ request-> $ selectedSize)){//或is_int ? 
$ Size = Size :: where('product_id',$ request-> id) - > update(['size'=> $ request-> $ selectedSize]);
}


I want to update a one to many relationship. For example I have a model called Product

class Product extends Model
{
    protected $primaryKey = 'product_id';
    public $timestamps = FALSE;

    public function Size(){
        return $this->hasMany('App\Size');
    }

}

and a model called Size

class Size extends Model
{
    public $timestamps = FALSE;
    protected $fillable = ['product_id','size'];

    public function Product(){
        return $this->belongsTo('App\Product');
    }

here is my controller

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);

But what it is doing updating all the records of size with the selectedd product id to the last enterder size. I want to update all the sizes with the slected diffrent sizes not the last selected sizes

How to update the sizes of a particular product. Like many to many relations' sync method is there any way to update the records.

解决方案

You override your $array in the loop. After the for loop, $array has possibly the last size.

In general, your query is correct, but it's about the place of execute. It should be like below:

if (isset($request->$selectedSize)) { // or is_int() ?
    $Size = Size::where('product_id', $request->id)->update(['size'=> $request->$selectedSize]);
}

这篇关于更新laravel中的一对多关系5.3的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆