Laravel(5.6)电子商务的雄辩关系

时间:2018-05-29 02:06:29

标签: mysql database laravel laravel-5 eloquent

所以,我正在尝试通过Laravel Eloquent Relationships来思考我正在研究的电子商务项目。我有一个产品表,我正在考虑创建一个flavors表和一个大小表。以下是我正在关注的关系:

一种产品可以有多种口味 - 这个我可以使用一对多,即hasMany,关系。

一个产品可以有多种尺寸 - 这个我可以使用一对多,即hasMany,关系。

一种口味可以与许多产品相关联 - 这个我不确定,因为我不想在口味表中重新创造味道并将重复的味道与不同的产品联系起来,I& #39;想要将味道与许多产品联系起来,但不知道如何实现这一目标。建议?

或者某人有干净(呃)的方法来完成这项工作?提前谢谢。

1 个答案:

答案 0 :(得分:0)

您可以在产品表中保存flavor的ID(如果产品只有一种风味)。

要在产品中保存多种风味,您需要第三个表格。

示例:

TableProducts | TableFlavours | TableUsedFlavours(将保存Product's ID和Flavor的ID)。

使用“with”搜索关联TableUsedFlavours的产品。通过关系,您还可以将TableFlavours联系起来,以带来风味的名称。

从产品中检索风味(也有风味名称):

产品控制器执行雄辩查询:

$record: Product::select(some_fields)
->with('flavours')
->get();

产品模态,创建'风味'功能:

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

此代码未经过测试,但这是逻辑。