でも、わざわざ hasMany だろうとか belongsToだとしか指定しないといけない。
そこで、containable ビヘイビアを使えば以下のようにするだけで関連モデルを読み込ませない
ようにできる。
条件
Workモデルには
belongsTo として Userモデル
hasMany として Worktagモデル
が読み込まれている
普通にfindすると?
[1] => Array
(
[Work] => Array
(
[id] => 18
[price] => 7000
[body] => 記事を一回書き込むだけで7000円を差し上げます。
たった5分のお仕事ですので、お気軽にご応募下さい。
[ 詳細 ]
まずは、あなたのブログやmixiなどを拝見します。
↓
そのブログ内に指定した記事を書いて下さい。
↓
記事を確認後、すぐに報酬をお支払いします。
ただし、記事は特別な事由が無い限り削除しないで下さい。
まずはお気軽にお問い合わせ下さい。
)
[Worktag] => Array
(
[0] => Array
(
[id] => 32
[work_id] => 18
[tagname_id] => 3
[created] => 1284946705
)
[1] => Array
(
[id] => 31
[work_id] => 18
[tagname_id] => 215
[created] => 1284946705
)
[2] => Array
(
[id] => 30
[work_id] => 18
[tagname_id] => 22
[created] => 1284946704
)
[3] => Array
(
[id] => 25
[work_id] => 18
[tagname_id] => 211
[created] => 1284946704
)
[4] => Array
(
[id] => 24
[work_id] => 18
[tagname_id] => 26
[created] => 1284946704
)
[5] => Array
(
[id] => 29
[work_id] => 18
[tagname_id] => 214
[created] => 1284946704
)
)
)
という内容が表示される。
これを、以下のようにすると・・・。
Workモデルのデータだけ欲しい
unbindModelを使ってみよう
$this->Work->unbindModel(array('belongsTo' => array('User')));
$this->Work->unbindModel(array('hasMany' => array('Worktag')));
$work = $this->Work->find('all', array('order' => 'Work.id desc' , 'limit' => 3 , 'fields' => array('id' , 'price' , 'body')));
と、こういう書き方をすると
[1] => Array
(
[Work] => Array
(
[id] => 18
[price] => 7000
[body] => 記事を一回書き込むだけで7000円を差し上げます。
たった5分のお仕事ですので、お気軽にご応募下さい。
[ 詳細 ]
まずは、あなたのブログやmixiなどを拝見します。
↓
そのブログ内に指定した記事を書いて下さい。
↓
記事を確認後、すぐに報酬をお支払いします。
ただし、記事は特別な事由が無い限り削除しないで下さい。
まずはお気軽にお問い合わせ下さい。
)
)
こんな感じのデータになる。
containを使ってみよう
$this->Work->contain();
$work = $this->Work->find('all', array('order' => 'Work.id desc' , 'limit' => 3 , 'fields' => array('id' , 'price' , 'body')));
と書くと、上記と同じ
[1] => Array
(
[Work] => Array
(
[id] => 18
[price] => 7000
[body] => 記事を一回書き込むだけで7000円を差し上げます。
たった5分のお仕事ですので、お気軽にご応募下さい。
[ 詳細 ]
まずは、あなたのブログやmixiなどを拝見します。
↓
そのブログ内に指定した記事を書いて下さい。
↓
記事を確認後、すぐに報酬をお支払いします。
ただし、記事は特別な事由が無い限り削除しないで下さい。
まずはお気軽にお問い合わせ下さい。
)
)
というデータになる。
よって、関連モデル外すなら contain を使った方が圧倒的に楽。



