【问题标题】:Laravel (5.6) Eloquent Relationship for EcommerceLaravel (5.6) 电子商务的雄辩关系
【发布时间】:2018-11-07 13:55:38
【问题描述】:

所以,我正在尝试为我正在从事的电子商务项目考虑 Laravel Eloquent 关系。我有一个产品表,我正在考虑创建一个口味表和一个尺寸表。以下是我正在研究的关系:

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

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

一种风味可以与许多产品相关联 - 我不确定这一风味,因为我不想只是在风味表中重新创建风味并将重复的风味与不同的产品相关联,我想将风味与许多产品联系起来,但不知道如何做到这一点。有什么建议吗?

或者有人有一个干净的(er)方法来完成这个吗?提前谢谢你。

【问题讨论】:

    标签: mysql database laravel laravel-5 eloquent


    【解决方案1】:

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

    要在产品中保存多种口味,您需要第三张桌子。

    示例:

    餐桌产品 |餐桌风味 | TableUsedFlavours(将保存产品的 ID 和风味的 ID)。

    比使用“with”搜索产品来关联 TableUsedFlavours。通过关系,您也可以关联 TableFlavors,以带来风味的名称。

    从产品中检索风味(以及风味名称):

    产品控制器做雄辩的查询:

    $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);}]);
        }
    

    现在在 UsedFlavors 模型中:

    public function feature(){
            return $this->belongsTo(Flavour::class,'flavour_id','id');
        }
    

    现在在 Flavor 模型中:

    public function usedFeatures()
        {
            return $this->belongsTo('UsedFlavours','id');
        }   
    

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

    【讨论】:

    • 好的,我正在努力理解。第三张表还是一对一的关系吧?这如何让我将一种口味与多种产品联系起来?
    • 好的,我有点明白你在说什么,我将尝试实施。如果我还有任何问题,我会回来的。谢谢!
    猜你喜欢
    • 2018-11-14
    • 1970-01-01
    • 2015-03-14
    • 2018-11-28
    • 2015-01-11
    • 2021-06-03
    • 2020-03-26
    • 1970-01-01
    相关资源
    最近更新 更多