【CakePHP】findの使い方(list)

2019年7月29日

バージョン:CakePHP 2.2.2
find('list’)を使用すると「primaryKey」が配列キー、「displayField」が配列値の形でデータ取得を行います。
デフォルトでは「id」と「name」というフィールドが取得できるみたいです。
もし、「name」がない場合は、「title」というフィールドが返ってきます。
「id」と「name」「title」以外のフィールドを取得したい場合は、下記のようにします。

1.モデルに「primaryKey」と「displayField」をセットする

1
2
3
4
class モデル名 extends AppModel {
    public $primaryKey = 'Field1';
    public $displayField = 'Field2';
}

2.コントローラで取得時に指定する

1
2
3
4
5
6
7
$conditions = array(
    'fields' => array(
        'Field1',
        'Field'
    ),
);
$this->モデル名->find('list',$conditions);

また、名前など取得値を組み合わせたい場合は、次のようにします。

1
2
3
4
5
6
7
8
9
10
$this->モデル名->virtualFields = array(
    'full_name' => "CONCAT(last_name , ' ', first_name)"
);
$conditions = array(
    'fields' => array(
        'id',
        'full_name'
    ),
);
$this->モデル名->find('list',$conditions);

スポンサーリンク