2

アーティストモデルと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'
    ));
4

1 に答える 1

0

あなたが持っているものはかなり良いです。一時テーブルを作成する大規模な結合を使用するよりも、常に複数のクエリを使用することを好みます。パフォーマンスが多少低下する可能性があります。

以下のようなものも試してみてください

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

このクエリのようなものに沿った何かもあなたが必要なものを手に入れます(エラーチェックされていません)

于 2011-03-30T06:15:59.147 に答える