1

このコードを使用しましたが、1 つのテーブルのデータしか選択されていません。

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;

2 つのテーブルからすべてのフィールドを取得するにはどうすればよいですか?

私のコードに誤りがある場合は?

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 に答える