所以,我正在尝试通过 Laravel Eloquent Relationships 思考我正在从事的电子商务项目。我有一个产品表,我正在考虑创建一个口味表和一个尺寸表。以下是我正在查看的关系:
一个产品可以有多种口味 - 这个我可以只使用一对多关系,即 hasMany 关系。
一个产品可以有多种尺寸 - 这个我可以只使用一对多关系,即 hasMany 关系。
一种口味可以与许多产品相关联 - 这个我不确定,因为我不想在口味表中重新创建一种口味并将重复的口味与不同的产品相关联,我想将味道与许多产品联系起来,但不确定如何做到这一点。有什么建议吗?
或者有人有一个干净的(呃)方法来完成这个吗?提前谢谢你。
最佳答案
您可以在产品表中保存口味的 ID(如果产品只有一种口味)。
要在产品中保存多种口味,您需要第三张 table 。
示例:
表格产品 |餐 table flavor | TableUsedFlavours(将保存产品 ID 和口味 ID)。
比搜索产品使用“with”关系 TableUsedFlavours。通过关系,您还可以关联 TableFlavours,以带来 flavor 的名称。
从产品中检索 flavor (以及 flavor 名称):
产品 Controller 做 Eloquent 查询:
$record: Product::select(some_fields)
->with('flavours')
->get();
产品模态,创建 'flavours' 函数:
public function flavours()
{
return $this->hasMany(UsedFlavours::class, 'product_id', 'id')
->with(['flavour' =>function($query){
$query->select(['flavour_name'])->where(anything);}]);
}
现在在 UsedFlavours 模型中:
public function feature(){
return $this->belongsTo(Flavour::class,'flavour_id','id');
}
现在在 Flavor 模型中:
public function usedFeatures()
{
return $this->belongsTo('UsedFlavours','id');
}
此代码未经测试,但逻辑就是这样。
关于mysql - Laravel (5.6) Eloquent 电子商务关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50575398/