将多条记录保存在一对多关系中laravel 5

Mut*_*uad 3 php one-to-many eloquent laravel-5.3

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

产品型号

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

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

}
Run Code Online (Sandbox Code Playgroud)

尺寸型号

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

    public function Product(){
        return $this->belongsTo('App\Product');
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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


    }
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误

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

问题是什么?

sch*_*rht 6

好的,让我们从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.']),
]);
Run Code Online (Sandbox Code Playgroud)

问题

您将数组传递给数组。错了

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

$product_id->Size()->saveMany([
    new App\Size(['size' => 1])    
]);
Run Code Online (Sandbox Code Playgroud)