1

私はこれに沿ってクエリを持っています:

SELECT * FROM posts WHERE owner_id IN (SELECT owner_id FROM owners_list WHERE user_id = 1) ORDER BY modified DESC

同等の最も効率的な Cake 検索呼び出しは何ですか? ありがとう!

4

2 に答える 2

0

あなたは2つの検索でそれを行うことができます. owner_list テーブルのモデル名は OwnersList であると仮定します。

    $user_ids = $this->OwnersList->find('list', array(
        'fields'=>array('id','id'),
        'conditions'=>array(
            'OwnersList.user_id'=>1
        )           
    ));

    $results = $this->Post->find('all',array(
        'Post.owner_id'=>$user_ids
    ));
于 2012-04-12T17:46:40.063 に答える
0

3つの選択肢:

1) 複雑ですが、Cake はサブクエリを処理します: http://book.cakephp.org/2.0/en/models/retriving-your-data.html#sub-queries

例があるSOの質問は 次のとおりです。

2) 結合ステートメントを使用します: http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#joining-tables

3)最初にサニタイズする限り、Model::query()経由でクエリをそのまま使用できます

エラーが発生しにくく、サニタイズ/エスケープについて心配する必要がないため、オプション2を好みます。ジョインのコツをつかめば、より頻繁にジョインを使用していることに気付くでしょう。

于 2012-04-11T21:43:28.890 に答える