PHPActiveRecord と CodeIgniter を使用しています。ブログ CMS を作成しようとしていますが、ブログには多くのカテゴリがあり、blogrefs という別のテーブルを参照しています。だから基本的に
blogs => blogrefs => blogcats
blogrefs は blogrefs.blog_id を通じてブログを参照しています
blogrefs は、blogrefs.blogcat_id を介して blogcats を参照しています
function get_blogs($params = array()){
$CI =& get_instance();
$joins = 'LEFT JOIN blogrefs ON blogs.id = blogrefs.blog_id';
$joins .= 'LEFT JOIN blogcats ON blogrefs.blogcat_id = blogcats.id';
$category = (isset($params['category']))?$params['category']:'';
$keyword = (isset($params['keyword']))?$params['keyword']:'';
$status = (!isset($params['status']) || $params['status'] == '')?'':$params['status'];
$order_by = (isset($params['order_by']))?$params['order_by']:'created_on';
$direction = (isset($params['direction']))?$params['direction']:'DESC';
$limit = (isset($params['limit']))?$params['limit']:'';
$offset = (isset($params['offset']))?$params['offset']:'';
$st = '';
if($status == ''){
$st = '!';
}
if(!empty($category))
{
$conditions = array(
"((blogcats.id = ?) OR (blogcats.parent_id = ?))
AND blogs.status $st= ?
AND (blogs.title LIKE '%$keyword%' OR blogs.content LIKE '%$keyword%')",$category,$category,$status
);
}else{
$conditions = array(
"blogs.status $st= ?
AND (blogs.title LIKE '%$keyword%' OR blogs.content LIKE '%$keyword%')",$status
);
}
$result = Blog::find('all',array(
'include' => array('blogcat','blogref','user'),
'joins' => $joins,
'conditions' => $conditions,
'limit' => $limit,
'offset' => $offset,
'order' => "$order_by $direction",
'group' => 'blogs.id'
));
$count = Blog::find('all',array(
'conditions' => $conditions
));
$object = new stdClass;
$object->posts = $result;
$object->total = count($count);
return $object;
}
私が使用する場合だけでなく、すべてが機能します
((blogcats.id = ?) OR (blogcats.parent_id = ?))
特定のカテゴリからブログを取得します。どんな答えでも大歓迎です。