我有Board,Tag,BoardsTag模型,板表保存板数据,标签表保持标签数据和boards_tags表保持板和板之间的关系;标签。 现在在BoardsController我想找到具有特定标签的板我做了类似的事情:
$boards = $this->Board->find('all',
array(
"conditions"=>'Tag.title'=>$tags,
)
);
但我有错误。请告诉我该怎么做?
答案 0 :(得分:2)
您可以使用ContainableBehavior:
class Board extends AppModel {
public $actsAs = array('Containable');
/* etc. */
在你的控制器中:
$boards = $this->Board->find('all', array(
'contain' => array(
'Tag' => array(
'conditions' => array(
'Tag.title' => $tags
)
)
)
));
答案 1 :(得分:1)
可能正在使用ADHOC-Join可以满足您的需求。
$this->Board->find('all', array(
'joins' => array(
array(
'table' => 'boards_tags',
'alias' => 'BoardsTag',
'type' => 'INNER',
'conditions' => array(
'BoardsTag.board_id = Board.id'
),
),
array(
'table' => 'tags',
'alias' => 'Tag',
'type' => 'INNER',
'conditions' => array(
'Tag.id = BoardsTag.tag_id',
'And' => array(
'Tag.title LIKE' => '%' . $tags . '%'),
),
),
),
));