我使用了这段代码,但只选择了一个表的数据。
我需要从两个表中选择所有字段:
$options['joins'] = array(
array('table' => 'tbl_users',
'alias' => 'Users',
'type' => 'INNER',
'foreignKey' => 'assigned_by',
'fields' => 'Users.user',
'conditions' => array(
'TravancoAdmin.assigned_by = Users.id'
)
)
);
$options['conditions'] = array( 'TravancoAdmin.id' => $task_id);
$result = $this->find('all', $options);
return $result ? $result : 1;
如何从两个表中获取所有字段?
如果我的代码有任何错误?
答案 0 :(得分:5)
您需要将'fields'
选项移出'joins'
。否则$ this-> find将仅获取当前模型的字段。请记住在指定'fields'
时添加所需的所有字段,包括当前模型的字段以及您要加入的表格中所需的字段。
例如:
$options['joins'] = array(
array('table' => 'tbl_users',
'alias' => 'Users',
'type' => 'INNER',
'foreignKey' => 'assigned_by',
// 'fields' => 'Users.user', <- get rid of this
'conditions' => array(
'TravancoAdmin.assigned_by = Users.id'
)
)
);
$options['fields'] = array('TheModelThatThisRefersTo.*','Users.user'); // <- insert this
$options['conditions'] = array( 'TravancoAdmin.id' => $task_id);
$result = $this->find('all', $options);
return $result ? $result : 1;
答案 1 :(得分:0)
尝试使用reucrsive 2,如果要检索数据,则必须将表格正确地关联到moedl中。 在查询之后,您可以拥有一个包含所有字段的大数组,尝试使用var_dump进行打印,看看您是否拥有所需的所有字段
$this->recursive = 2;
$options['joins'] = array(
array('table' => 'tbl_users',
'alias' => 'Users',
'type' => 'INNER',
'foreignKey' => 'assigned_by',
'fields' => 'Users.user',
'conditions' => array(
'TravancoAdmin.assigned_by = Users.id'
)
)
);
$options['conditions'] = array( 'TravancoAdmin.id' => $task_id);
$result = $this->find('all', $options);
return $result ? $result : 1;