ちなみに関係は
Moteria(ユーザー) 1 に対して Usertag 多 の関係。
$ar = array(
0 => array(
'Moteria' => array(
'id' => 103,
'name' => '太郎'
),
'Usertag' => array(
'0' => array(
'id' => 55,
'name' => イケメン
),
'1' => array(
'id' => 56,
'name' => 素敵
),
)
),
1 => array(
'Moteria' => array(
'id' => 103,
'name' => '花子'
),
'Usertag' => array(
'0' => array(
'id' => 56,
'name' => 素敵
)
)
),
2 => array(
'Moteria' => array(
'id' => 103,
'name' => 'ひでまん'
),
'Usertag' => array(
)
),
);
これだと Usertag を持っていないひでまんまでデータを拾ってくる。
そんな切ないことは避けたい。
でもcakephpはうまく言うことを聞いてくれない。
これを
タグを持っていないひでまんのデータを取得しないようにするには
$this->Moteria->bindModel(array('belongsTo'=>array('Usertag'=>array(
'foreignKey'=>false,
'conditions'=> array('Moteria.id=Usertag.user_id'),//Usertag を少なくとも一つ以上持っているユーザーのみ読み出す
//'conditions'=> array('Moteria.id=Usertag.user_id','Usertag.id=159'),//Usertag を少なくとも一つ以上持っているユーザー で Usertag の ID 159 を持っているユーザーのみ読み出す
//'conditions'=> array('Moteria.id=Usertag.user_id','Moteria.id=221'),//Usertag を少なくとも一つ以上持っているユーザー で Moteria の ID 159 を持っているユーザーのみ読み出す
'type'=>'inner',
'fields'=>array('count(Usertag.user_id) as num')))));
$users=$this->Moteria->find('all', array('group'=>'Moteria.id'));
のように書けば良い。
すると
<?
$ar = array(
0 => array(
'Moteria' => array(
'id' => 103,
'name' => '太郎'
),
'Usertag' => array(
'0' => array(
'id' => 55,
'name' => イケメン
),
'1' => array(
'id' => 56,
'name' => 素敵
),
)
),
1 => array(
'Moteria' => array(
'id' => 103,
'name' => '花子'
),
'Usertag' => array(
'0' => array(
'id' => 56,
'name' => 素敵
)
)
)
);
?>
というデータを取得することができる。







こんにちわ。 preg_replace_callba…