【发布时间】:2015-08-11 20:12:41
【问题描述】:
我正在尝试通过一个模型来获取另一个模型的数据。 该应用有几个模型:
产品:有很多部分(小,中)
分量:有许多分量成分(ingredient_id - 100g 或 10 个)
部分成分:有很多成分(培根,奶酪)
成分:有许多翻译(3 种语言)
产品表
id
category_id
product_name
部分表
id
product_id
portion_name
portion_weight
部分成分
id
portion_id
ingredient_id
amount
成分
id
base_unit
transaction_unit
multiplier
我已经尝试在模型中与 hasMany 和 belongsTo 建立关系,但没有成功。我正在尝试获取一部分产品的所有成分。任何想法都值得赞赏。
谢谢!
【问题讨论】:
-
我不是 laravel 专家,只是一个建议,你尝试过 has-many-through 吗? laravel.com/docs/4.2/eloquent#has-many-through
-
@Xiabili :感谢您的建议,但是 hasManyThrough 可以在 3 个模型之间建立关系。问题是我需要获取 4 个模型的数据。 (在某些情况下我需要通过 5-6 个模型)
-
从 laravel 文档中,我找不到任何可以让您通过 5 或 6 个模型的函数,到目前为止,我认为您应该使用查询生成器在这些表之间构建连接查询...像这样:成分::join('portion_ingredients as pi', 'pi.ingredient_id', '=', 'ingredients.id')->join('portions', 'portions.id', '=' , 'pi.portions_id')->where('portions.product_id', 2)->get(); (不确定是否工作,尚未测试)
-
您需要像@Xiabili 上面所说的那样构建一个查询。使用 Laravel 的 ORM 无法通过这么多模型直接访问关系。实际上,我不知道是否有任何 ORM 会让你做这样的事情。无论如何,使用查询生成器可能比通过关系方法访问对象有更好的查询。有关详细信息,请参阅以下链接:laravel.com/docs/4.2/queries