使用cakephp 3根据第二个表从数据库中查找记录[重复]
Posted
技术标签:
【中文标题】使用cakephp 3根据第二个表从数据库中查找记录[重复]【英文标题】:Find records from database based on second table using cakephp 3 [duplicate] 【发布时间】:2017-04-06 12:14:14 【问题描述】:我有两个表“类别”和“项目”
categories ->
id | title
1 | cat-1
2 | cat-2
items ->
id | title | category_id | score
1 | item-1 | 1 | 4
2 | item-2 | 1 | 5
3 | item-3 | 1 | 3
4 | item-4 | 2 | 4
5 | item-5 | 2 | 5
6 | item-6 | 2 | 6
我想通过 apply limit(2) 获得结果,并使用 cakephp 3 在“items”表上按分数排序 输出喜欢 -
"cat-1":
"0":
"id": 2,
"title": "item-2",
"score": "5"
,
"1":
"id": 1,
"title": "item-1",
"score": "4"
,
"cat-2":
"2":
"id": 6,
"title": "item-6",
"score": "6"
,
"3":
"id": 5,
"title": "item-5",
"score": "5"
【问题讨论】:
你想要一个查询mysql以这种方式提取数据吗? 【参考方案1】:使用contain
:
$this->Categories->find()
->contain([
'Item' => function($q)
return $q->find()
->order(['score' => 'asc'])
->limit(2);
]);
未经测试 - 对 iPhone 发表评论。 ;)
【讨论】:
这行不通,ORM 无法限制每个组的关联,这可能是一项棘手的任务。 greatest-n-per-group | google.com/search?q=mysql+related+greatest+n+per+group。除非有人击败我,否则我稍后会为hasMany
关联添加一个快速而肮脏的示例到***.com/questions/30241975/…。
我现在太忙了,没有时间进一步研究这个...只需将 MySQL 特定的自定义关联放在一起用于测试目的,基于类似于 ***.com/q/9969126/1392379 的ROW_NUMBER()
仿真乙>。如果有人感兴趣:gist.github.com/ndm2/039da4009df1c5bf1c262583603f8298以上是关于使用cakephp 3根据第二个表从数据库中查找记录[重复]的主要内容,如果未能解决你的问题,请参考以下文章