1

我使用了这段代码,但只选择了一个表的数据。

我需要从两个表中选择所有字段:

$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;

如何从两个表中获取所有字段?

如果我的代码有任何错误?

4

2 回答 2

4

您需要将'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;
于 2012-09-13T12:23:14.227 回答
0

尝试使用 reucrsive 2,如果要检索数据,则必须正确地将表与模型相关联。查询后,您可以拥有一个包含所有字段的大数组,尝试使用 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;
于 2012-09-13T12:24:16.663 回答