2011-08-13 10 views
0

私は鈍いだろう、私はこの特別な選択から構築されるモデルのリストが必要になります。CakePHPの、特別な選択

SELECT * FROM posts p WHERE p.user_id IN 
    (SELECT u.id FROM users u, following f 
     WHERE u.id = f.followee_id AND f.follower_id = $id) 
    ORDERED BY p.created 
    LIMIT $limit; 

をモデルに機能としてこれを入れて、それは可能ですか?私はCakePHPには新しく、認める必要があります。

ここではfind機能を使用することはできません。なぜなら、投稿が適切に「混合」されないからです。

答えて

1

はい、書き込むクエリを実行するModelクラスに独自のメソッドを追加できます。 しかし、あなたの入力をサニタイズすること(あなた自身のクエリを書くときは自動的に行われない)とテーブルプレフィックスを追加することを忘れないでください。

App::import('Sanitize');  

class YourModel extends AppModel { 

    public function specialSelect($id, $limit) { 
    $id = Sanitize::paranoid($id); // or use (int) to convert it to integer 
    $limit = Sanitize::paranoid($limit); 

    return $this->query(
     'SELECT * FROM '.$this->tablePrefix.'posts p WHERE p.user_id IN '. 
     '(SELECT u.id FROM '.$this->tablePrefix.'.users u, '.$this->tablePrefix.'.following f '. 
     'WHERE u.id = f.followee_id AND f.follower_id = '.$id.') '. 
     'ORDER BY p.created LIMIT '.$limit 
    ); 
    } 

} 
+0

これは簡単です。ありがとう! – Lanbo

関連する問題