CakePHP: поиск информации в отдаленно связанных моделях - PullRequest
2 голосов
/ 30 марта 2011

У меня есть модель новостей, которая имеет отношения HABTM с моделью артистов, и у художника, в свою очередь, есть много гастролей.

Если я хочу найти все турдаты, связанные с текущим новостным сообщением, что такоеэффективный способ выразить это для CakePHP?

Это то, что я имею до сих пор;Мне интересно, если (а) похоже, что это должно работать, и (б) есть ли более краткий способ написать это:

    $relatedartists = $this->News->ArtistsNews->find('list', array(
        'conditions'=>array('ArtistsNews.news_id' => $id),
        'fields'=>array('artist_id')
    ));
    $livedates = $this->News->Artists->Tour->find('all', array(
        'conditions'=>array('Tour.artist_id'=> $relatedartists, 
            'date >= ' . time()),
        'order'=>'date ASC'
    ));

1 Ответ

0 голосов
/ 30 марта 2011

То, что у вас есть, довольно хорошо.Я всегда предпочитаю использовать несколько запросов, а не массивные объединения, которые создают временные таблицы.Это может несколько снизить производительность.

Вы также можете попробовать что-то похожее на приведенное ниже

$opts = array(
  'conditions' => array(
     'ArtistsNews.news_id' => $id
   )
);
$this->News->Artists->recursive = 2;
$this->News->Artists->find('all', $opts);

Что-то похожее на этот запрос также даст вам то, что вам нужно (без проверки ошибок)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...