我有一个新闻模型,它与艺术家模型有HABTM关系,而艺术家又有很多参与者。
如果我想找到与当前新闻项目相关的所有巡回演出,那么对于CakePHP来说,有效的方法是什么?
这是我到目前为止所拥有的;我想知道(a)它是否应该起作用,以及(b)是否有更简洁的写作方式:
$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'
));
答案 0 :(得分:0)
你所拥有的是非常好的。我总是喜欢使用多个查询而不是使用创建临时表的大量连接。它可以稍微降低性能。
你也可以尝试类似下面的内容
$opts = array(
'conditions' => array(
'ArtistsNews.news_id' => $id
)
);
$this->News->Artists->recursive = 2;
$this->News->Artists->find('all', $opts);
此查询之类的内容也可以满足您的需求(未检查错误)