CakePHPのfind listでいろいろ取得する

モデルを抽出する時のパラメータに list がありますが、
通常は id と name と言う名前の付けられたフィールドが使用されます。

$this->User->find('list');
// 何もしていなければ、この組み合わせで取得出来ます
Array
(
    [id] => name
)

それを変更する方法です。

// user.php に記述する
class User extends AppModel {
    var $primaryKey = 'mei';
    var $displayField = 'sei';
}

上記のように ,
$primaryKey を設定すると、指定したフィールドがキーに、
$displayField を設定すると、指定したフィールドが値に入ります。

Array
(
    [太郎] => 大阪
    [花子] => 大阪
)

 
 

毎回同じ組み合わせで取得する場合はいいですが、
今だけと言うときは、コントローラーで次のように指定する事も出来ます。

Read the rest of this entry »

岸和田のスパリゾート・リバティが閉館します。

今月末で閉館との話、、

 

生まれは岸和田では無いけれど、

思い出深い場所だったりします。

 

というか、働いてました :oops:

 

このサイトも、時期に閉鎖されるだろうから、スクリーンショットをとっておきました :roll:

 

私にとっては学校?何て言うのかな。いつも当たり前にそこにある場所みたいな。。

なんだろね :lol:

 

閉まる前に、会いに行こう。みんな元気かな?

CakePHP のビヘイビア Containable を使う

CakePHP でアソシエーションを設定したはいいけど、
条件を変更したり、今はこの関連は必要ない等の要望を叶えたいって時に使うビヘイビアです。

まずは使いたいモデルにビヘイビアを使用する記述をします。

// mymodel.php に記述する
class MyModel extends AppModel {
    var $actsAs = array('Containable');
 
    // hasOne , hasMany , belongsTo , hasAndBelongsToMany
    // の記述を書きます。
}

あとは、コントローラーで

$conditions = array(
    'contain' => array(
       'MyModel2'
    ),
   'conditions' => array()
);
$this->MyModel->find('all',$conditions);

上記のような感じで記述すれば、関連づけたモデルが複数あっても、
MyModel2だけを取得出来ます。

条件を設定する場合も簡単で、

$conditions = array(
    'contain' => array(
        'MyModel2' => array(
            'conditions' => array('MyModel2.name =' => "タロウ"),
            'order' => 'MyModel2.created DESC'
        )
    )
);
$this->MyModel->find('all',$conditions);

contain の中に条件を加えれば出来ます。

ページングを使用する際は、少し変わるのですが、
通常の取得はこんな感じです。