mysql - Laravel (5.6) Eloquent 电子商务关系

标签 mysql database laravel laravel-5 eloquent

所以,我正在尝试通过 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/

相关文章:

过去 7 天的 MySQL 计数记录按零记录分组

php - 如何在 Laravel 5 中有条件地要求身份验证?

python - 在 OSX 10.6 上为 Python 安装 MySQLdb - 创建 .egg 时出错

java - MySql 数据在第 1 行的 'value' 列被截断

mysql - Yii 框架——InnoDB 与 MyISAM

mysql - 从嵌套规则生成器生成 MySQL 查询

mysql - 加载逗号后空格不一致的 CSV 文件

mysql - MySQL 数据库中的更新未反射(reflect)在网页上

orm - Laravel Eloquent,返回带有 "belongsTo"对象的 JSON?

php - 无法获取 MailChimp API listUpdateMember 以更改用户的电子邮件地址