我正在使用Kohana 3.3 ORM。我定义了以下模型:
class Model_Post extends ORM {
protected $_primary_key = 'ObjID';
protected $_has_many = array(
'categories' => array(
'model' => 'Category',
'through' => 'posts2categories',
'foreign_key' => 'post_id',
),
);
}
和
class Model_Category extends ORM {
protected $_has_many = array(
'posts' => array(
'model' => 'Post',
'through' => 'posts2categories',
'foreign_key' => 'category_id',
),
);
}
现在,获取属于ONE类别的所有帖子非常简单:
$posts = $categoriesQuery->where('category_id','=',1)->find()->posts->find_all();
我想知道如何获取属于类别1或2的所有帖子。 我尝试过很多东西,而且没有它们起作用。我怎样才能使它工作?我有办法使用ORM模块而不是直接的SQL查询吗?
答案 0 :(得分:3)
您可以向Model_Post添加一个函数,该函数将返回属于多个(或一个)类别的所有帖子。
public function in_categories($categories)
{
return $this->join("posts2categories")->on("posts2categories.post_id", "=", "posts.id")
->join("categories")->on("category.id", "=", "posts2categories.category_id")
->where("categories.id", "IN", $categories);
}
这将返回类别1,3和5中的所有帖子。
ORM::factory("Post")->in_categories(array(1, 3, 5))->find_all();
答案 1 :(得分:0)
如果我正确地理解你的问题,你只需要两个条件:
...
$data = DB::select('*')->from('table_name')
->where_open()
->where('category_id','=',1)
->or_where('category_id','=',2)
->where_close()
...