我会直言不讳,我需要从这个特殊的选择中构建模型列表:
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
功能,因为这些帖子不会被“混合”。
答案 0 :(得分: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
);
}
}