php - CakePHP 3.3 从连接表中获取两列

标签 php mysql cakephp cakephp-3.0

我是 cakePHP 的新手,在尝试围绕表工作时,我遇到了从两个表获取特定列的问题。我想要实现的是:

SELECT categories_1.category_id,categories_2.name FROM categories_1 JOIN categories_2 ON categories_2.category_id = categories_1.category_id

我知道我能做到:

$query=$this->Categories1->find('all')->contain(['Categories2'])

但是,这样我就可以将整个表categoires_2作为内部数组,这使得结构更加复杂,并从第二个表中添加不必要的列。

我尝试按照文档进行操作,但我想出的代码实际上不起作用:

 $query=$this->Categories1->find('all')
                            ->select('Categories2.name','Categories1.category_id')
                            ->join([
                                    'table' => 'categories_2',
                                    'alias' => 'Categories2',
                                    'conditions' => array('Categories2.category_id' => 'Categories1.category_id')     
                            ]); 

非常感谢您帮助纠正代码... 谢谢

编辑: 蛋糕正在生成以下sql代码:

SELECT Categories2.name AS `Categories2__name` FROM categories_1 Categories1 INNER JOIN categories_2 Categories2 ON Categories2.category_id = :c0

最佳答案

您可以指定要返回的字段

$query=$this->Categories1->find('all')->contain(
                                 ['Categories2' => [
                                  'fields' => ['field1', 'field2']   
                                     ]
                                 ]
                           )

关于php - CakePHP 3.3 从连接表中获取两列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39634295/

相关文章:

php - 模拟 phpMyAdmin 导出功能

php - Mysql - 表结构

php - 在查询中找不到上传的 tmp 文件

php - CakePHP 缓存国际化翻译

mysql - 通过创建额外的表格在网站中使用两种语言的最佳方法

php - Container.php 中的 ReflectionException 第 734 行 : Class PragmaRX\Tracker\Vendor\Laravel\Middlewares\Tracker does not exist Laravel 5. 2

mysql - 删除mysql中以url开头的部分

mysql - 包括限制在 group by 子句中选择前 n 行

php - 使用 CakePHP 修改一行

去除标签的 PHP 函数,白名单标签和属性列表除外