我是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的数据。任何帮助表示赞赏。谢谢。
答案 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)