2016-09-22 34 views
0

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

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 
+0

顺便说一下我在模型设定的关系Categories2 - >属于关联和Categories1这 - >的hasMany – user1857756

+0

你说的“不真正的工作”意味着什么呢?当你描述错误信息或意外行为时,请特别注意! – Shadow

+0

现在没有错误,但结果为空 – user1857756

回答

2

您可以指定要返回的字段

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

工作!感谢帮助! – user1857756