使用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根据第二个表从数据库中查找记录[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在不借助 PL/SQL 的情况下从第二个表中查找相关值

基于第二个表在表中查找属性的有效方法

如何加入/子查询第二个表

根据第二个表中列 y 的最大值连接列 x 上的 2 个表

根据 mongodb 中第一个表的结果从第二个表加载数据

从3个表中检索数据如何使用Laravel中的第一个表从最后一个表中检索数据