CakePHP Pagination与具有HABTM模型的模型

时间:2015-02-16 16:29:46

标签: php cakephp pagination

我有3个模特(艺术家,媒体项目,口音)

艺术家有很多媒体项目, 媒体项目具有AndBelongsToMany重音符,

现在我遇到的问题是如何使用分页搜索,我需要获得8位艺术家的页面和与输入的重音相匹配的media_items。希望这是有道理的。

这就是我目前的

$this->Paginator->settings = array(
    'limit' => 8,
    'fields' => array("Artist.first_name",
                        "Artist.last_name", "Artist.image",
                        "Artist.image", "Artist.slug"),
    'order' => "Artist.last_name",
    'url' => $this->passedArgs,
    'contain' => array(
                    'MediaItem'=> array(
                        "fields" => array("MediaItem.file",
                                            "MediaItem.title",
                                            "MediaItem.accent",)
                ),
    'joins' => array(
                    array(
                        'table' => 'media_items',
                        'type' => 'INNER',
                        'alias' => 'MediaItem',
                        'conditions' => array(
                                "AND" => array('Artist.id = MediaItem.artist_id')
                            )
                    ),
                    array(
                        'table' => 'media_accents_media_items',
                        'type' => 'RIGHT',
                        'alias' => 'MediaAccentsMediaItems',
                        'conditions' => array(
                                "AND" => array('MediaAccentsMediaItems.media_item_id = MediaItem.id')
                            )
                    ),
                    array(
                        'table' => 'media_accents',
                        'type' => 'RIGHT',
                        'alias' => 'MediaAccent',
                        'conditions' => array(
                                "AND" => array('MediaAccent.id = MediaAccentsMediaItems.media_accent_id'),
                                "OR" => array('MediaAccent.name LIKE' => "%".$searchFor ."%")
                            )
                    )
                ),
    'group' => 'Artist.id',
    'update' => '.results-container',
    'evalScripts' => true
);

它会得到合适的艺术家,但会返回他们所有的曲目而不是我需要的曲目。有没有更好的方法而不是循环修剪它们的结果?这是我目前的备份计划。

1 个答案:

答案 0 :(得分:1)

删除联接并使用可包含的行为,这里docs用于更深层次的关联。