我有3个型号用户,商店, MerchantProduct 。
用户有很多商店 商店有很多MerchantProduct MerchantProduct属于用户和商店
我希望能够在user_id
表中保存store_id
和merchantproduct
用户模型
class User extends BaseModel {
public function stores()
{
return $this->hasMany(Store::class);
}
public function products()
{
return $this->hasMany(MerchantProduct::class);
}
}
商店模式
class Store extends BaseModel {
public function owner()
{
return $this->belongsTo(User::class);
}
public function merchantProducts()
{
return $this->hasMany(MerchantProduct::class);
}
}
商家模式
class MerchantProduct extends BaseModel {
public function owner()
{
return $this->belongsTo(User::class);
}
public function store()
{
return $this->belongsTo(Store::class);
}
}
我曾尝试使用以下代码进行保存,但我正在调用
未定义的方法Illuminate \ Database \ Query \ Builder :: merchantProducts()错误
$request->user()->stores()->merchantProducts()->create($request->all());
正确/正确的方法是什么
答案 0 :(得分:1)
首先,您不应将user_id
和owner()
关系添加到MerchantProduct
模型。
但是如果你想这样做,请手动添加用户ID保存MerchantProduct
对象:
Store::merchantProducts()->create(['user_id' => auth()->id()] + $request->all());
另外,将user_id
添加到$fillable
模型中的MerchantProduct
数组。
答案 1 :(得分:0)
我会采用非常简单的方法。由于您的store
模型已经有user_id
,因此您可以循环浏览store
集合并保存到DB
。
($request->user()->stores() as $store){
$merchant_product = new MerchantProduct();
$merchant_product->user_id = $store->user_id;
$merchant_product->store_id = $store->id;
//your other fields go here as you want to insert to merchant product
$merchant_product->save();
}