我正在尝试在一对多关系中保存多个记录。我有两个模型如下。
产品型号
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 \博客\供应商\ laravel \框架的\ src \照亮\数据库\雄辩\关系\ HasOneOrMany.php 在第237行
有什么问题?
答案 0 :(得分:4)
好的,让我们从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])
]);