在cakephp的另一个模型上设置条件

时间:2014-08-24 07:52:24

标签: cakephp

我有Board,Tag,BoardsTag模型,板表保存板数据,标签表保持标签数据和boards_tags表保持板和板之间的关系;标签。 现在在BoardsController我想找到具有特定标签的板我做了类似的事情:

$boards = $this->Board->find('all',
    array(
            "conditions"=>'Tag.title'=>$tags,
        )
    ); 

但我有错误。请告诉我该怎么做?

2 个答案:

答案 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 . '%'),
                                ),
                            ),
                        ),
                    ));