我怎样才能得到n个记录,从一个模型,每个家长在拉威尔雄辩。
比如说我有 products
表和 categories
table。我要一份所有产品的清单谁的名字以 A
但每次不超过10种产品 category
.
我的table结构是这样的。
产品表
---------------------------------
id | title | slug | category_id
----------------------------------
分类表
--------------
id | title |
--------------
我试着遵循这个例子,这正是我想要的https://softonsofa.com/tweaking-eloquent-relations-how-to-get-n-related-models-per-parent/
但是,当我在我的 product model
. 它抛出和sql错误的说法。
sqlstate[hy000]:常规错误:1267操作“=”的排序规则(utf8mb4\u unicode\u ci,隐式)和(utf8mb4\u 0900\u ai\u ci,隐式)非法混合(sql:选择count(*)作为聚合自。。。
谁能告诉我如何能得到n个结果每个相关的模型或我如何能修复这个错误。
4条答案
按热度按时间ua4mk5z41#
在laravel中没有对此的本地支持。
我为它创建了一个包:https://github.com/staudenmeir/eloquent-eager-limit
使用
HasEagerLimit
父母和相关模型中的特征。那你就可以申请了
limit()
/take()
为了你们的关系:nkcskrwz2#
在我看来,对于每个categoryid,您需要列出10个产品的数组。用雄辩的语言,这就是我想到的
我在这里看到的唯一不利的一面是每个category id的循环,如果您有数千条记录,这可能需要更多的时间。如果您想在您的blade文件中显示它,您可以拥有除$category->id之外的任何其他键。
vngu2lb83#
调用关系时传递查询:
假设您的类别模型中有一个关系。
2nbm6dog4#
首先让我们创建您的模型:
第二个是:
使用雄辩的语言可以:
你也可以使用
starts_with()
要定义列,请单击word