我是一个有用的助手,可以为您翻译文本。
问题模型:
这是我的查询结果的样子:
所以,由于我有24本杂志,数组中有24个
由于我将获得一个用户订阅的数组,其中包含像
我需要扩展这个查询并通过我将得到的
更新
我已经尝试了@Paul Spiegel在答案中建议的代码,现在我得到了一个集合数组,其中包含杂志问题的集合。每个杂志集合中的问题均按日期排序,并且与
我有两个表格,一个是带有字段product_code
的magazines
表格,另一个是issues
表。它们具有belongsToMany
关系。
杂志模型:
public function issues()
{
return $this->hasMany('App\Issue');
}
问题模型:
public function magazine()
{
return $this->belongsTo('App\Magazine');
}
目前我有一个查询,它按杂志ID分组获取问题集合,并按最后一期的日期排序。
$issues = Issue::orderBy('date', 'desc')->get()->groupBy('magazine_id');
这是我的查询结果的样子:
Collection {#431 ▼
#items: array:23 [▼
103 => Collection {#206 ▼
#items: array:52 [▶]
}
106 => Collection {#216 ▶}
124 => Collection {#452 ▶}
112 => Collection {#451 ▶}
115 => Collection {#450 ▶}
123 => Collection {#449 ▶}
107 => Collection {#448 ▶}
113 => Collection {#447 ▶}
117 => Collection {#446 ▶}
109 => Collection {#445 ▶}
110 => Collection {#444 ▶}
121 => Collection {#443 ▶}
120 => Collection {#442 ▶}
114 => Collection {#441 ▶}
116 => Collection {#440 ▶}
118 => Collection {#439 ▶}
126 => Collection {#438 ▶}
125 => Collection {#437 ▶}
119 => Collection {#436 ▶}
122 => Collection {#435 ▶}
105 => Collection {#434 ▶}
111 => Collection {#433 ▶}
104 => Collection {#432 ▶}
]
}
所以,由于我有24本杂志,数组中有24个
收藏夹
,每个收藏夹
包含一本杂志
的期刊
。这些收藏夹
按照每个收藏夹最新期刊的日期排序,每个收藏夹内部的期刊也按日期排序。因此,数组中的第一个收藏夹将是表格issues
中最新期刊所在的收藏夹,第二个收藏夹将是同一表格中第二新的期刊所在的收藏夹,依此类推。由于我将获得一个用户订阅的数组,其中包含像
产品代码
这样的内容:$productCodes = ['aa1', 'bb2', 'cc3'];
我需要扩展这个查询并通过我将得到的
$productCodes
数组进一步对集合进行排序。我需要在表magazines
中检查来自productCodes
数组的代码,其中我有product_code
字段。按magazine
分组的期刊集合应该被排序,以便第一个集合是属于与数组productCodes
中代码相同的magazine
的集合,并且其中,最先的将是其集合具有最新问题的日期。然后,其余集合应按日期排序。我如何做出这样的查询?更新
我已经尝试了@Paul Spiegel在答案中建议的代码,现在我得到了一个集合数组,其中包含杂志问题的集合。每个杂志集合中的问题均按日期排序,并且与
$productCodes
数组中的代码相同的杂志集合位于数组的开头,但杂志集合的数组仍未按每个杂志集合中最新问题的日期排序。
product_code
不是issues
表中的字段,而是在关系表magazines
中。 - LudwigIssues::groupBy('magazine_id')->with('magazine' => function($q){ $q->orderBy('product_codes', 'desc')->get(); } )->orderBy('date', 'desc')->get();
。我的 Laravel 技能有点生疏,但我认为这应该可以工作。 - Andreiwith
需要是一个数组。Issues::groupBy ('magazine_id')->with ([ 'magazine' => function ($q) { $q->orderBy ('product_codes', 'desc')->get (); } ])->orderBy ('date', 'desc')->get ();
- AndreiSQLSTATE[42000]:语法错误或访问冲突:1055 SELECT列表中的表达式#1不在GROUP BY子句中,并且包含非聚合列'aftenposten.issues.id',它在GROUP BY子句中没有功能依赖性;这与sql_mode = only_full_group_by不兼容(SQL:select * from
issuesgroup by
magazine_idorder by
datedesc)
。 - Ludwig