【问题标题】:Save multiple record in one to many relation laravel 5在一对多关系中保存多条记录 laravel 5
【发布时间】:2017-08-20 13:56:41
【问题描述】:

我正在尝试以一对多的关系保存多条记录。我有两个模型如下。

产品型号

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

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

}

尺寸型号

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

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

我想保存产品的尺寸。 我的控制器是

public function store(Request $request){

        $product_id = Products::select('product_id')->orderBy('product_id','desc')->first();

        if($request->size_m) $sizes[] = array("size" => $request->size_m );
        if($request->size_l) $sizes[] = array("size" => $request->size_l);
        if($request->size_s) $sizes[] = array("size" => $request->size_s);

        $product_id->Size()->saveMany($sizes);


    }

但我收到以下错误

HasOneOrMany.php 第 221 行中的 FatalThrowableError:类型错误:参数 1 传给 Illuminate\Database\Eloquent\Relations\HasOneOrMany::save() 必须是 Illuminate\Database\Eloquent\Model 的实例,给定数组,调用 D:\e-commerec\blog\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Relations\HasOneOrMany.php 在第 237 行

有什么问题?

【问题讨论】:

    标签: php eloquent laravel-5.3 one-to-many


    【解决方案1】:

    好的,让我们从https://laravel.com/docs/5.4/eloquent-relationships的一个例子开始:

    $post = App\Post::find(1);
    
    $post->comments()->saveMany([
        new App\Comment(['message' => 'A new comment.']),
        new App\Comment(['message' => 'Another comment.']),
    ]);
    

    问题

    你传递一个带有数组的数组。错了。

    解决方案

    您需要传递一个带有大小对象的数组,简化如下:

    $product_id->Size()->saveMany([
        new App\Size(['size' => 1])    
    ]);
    

    【讨论】:

    • 谢谢。这有帮助
    • 我在更新关系时也遇到了问题,考虑这个模型,我必须更新它。与多对多关系的 sync() 方法不同的是,有任何方法可以更新一对多关系,或者可能是另一种方法。你能帮帮我吗?有一个方法调用 associate()。但我不明白它是如何从文档中工作的
    • 你的意思是你只想保存唯一的关系?
    • 好的,看看我的回答 ;-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-02
    • 2013-09-19
    • 2015-03-05
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    相关资源
    最近更新 更多