У меня 3 модели (художник, медиа-элемент, акцент)
Художник hasMany медиа-элементы, медиа-элементы hasAndBelongsToMany акценты,
Теперь у меня возникают проблемы с поиском с разбивкой по страницам, мне нужно получить страницы из 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
);
он получает правильных художников, но возвращает все их следы, а не те, которые мне нужны. Есть ли лучший способ, а не перебирать результаты, обрезая их? Это мой текущий план резервного копирования.
Удалите соединения и просто используйте Containable Behavior, вот документы для более глубоких ассоциаций.