加入查询仅从一个表cakephp 3中检索数据

时间:2017-07-28 08:48:30

标签: php mysql cakephp cakephp-3.4

我是cakephp的新手。我是usign查询构建器,使用cakephp查询构建器中的join从两个表中获取详细信息。但我正在编写的查询仅从一个表中获取详细信息。需要帮助来从其他表中获取数据。

这是我通过连接两个表来获取数据的代码:

public function edit($id = null) {

    $events_table = TableRegistry::get('Events');

    $events = $events_table->find('all') 
            ->hydrate(false)
            ->join([
            'CourseType'=>  [
                        'table'      => 'coursetype',
                        'type'       => 'LEFT',
                        'conditions' => 'Events.type = CourseType.coursetype_id',
                    ]                   
            ])->where(['Events.id' => $id]);

     $event = $events->toArray();       
     $this->set('event', $event);
}

因此,我只从事件表中获取详细信息。但我也需要coursetype的数据。任何帮助表示赞赏。谢谢。

2 个答案:

答案 0 :(得分:1)

手动添加联接不会导致选择任何其他数据,您必须通过指定要通过select()方法选择的字段来自行完成。

$events = $events_table
    ->find('all') 
    ->hydrate(false)
    ->select($events_table)
    // either add the fields one by one, or pass a table object
    // as above to select all fields of the table
    ->select(['CourseType.id', 'CourseType.xyz', /* ... */])
    // ...

我建议使用use containments,即设置所需的关联(如果尚未存在),然后只使用contain()

$events = $events_table
    ->find('all') 
    ->hydrate(false)
    ->contain('CourseType')
    ->where(['Events.id' => $id]);

另见

答案 1 :(得分:-3)

您的解决方案:CakePHP find method with JOIN