我如何从Laravel雄辩地从每个父母的模型中获取n条记录。

例如,假设我有products表和categories表。我想列出所有以A开头的产品名称,但每个category不能超过10个产品。

我的表结构是这样的。

产品表

---------------------------------
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_unicode_ci,IMPLICIT)和(utf8mb4_0900_ai_ci,IMPLICIT)
  操作'='(SQL:选择count(*)作为...


任何人都可以告诉我如何从每个相关模型中获得n个结果,或者如何解决此错误。

最佳答案

调用关系时传递查询:

Category::with(['products' => function($query){
    $query->take(10)->skip(0);
}])->get();


假设您在“类别”模型中具有关系。

public function products()...

10-05 23:11