【发布时间】:2014-03-26 16:32:39
【问题描述】:
我有以下代码:
if ($query):
$query_c = new CDbCriteria;
$query_c->alias = 'P';
$query_c->compare('name', $query, true, 'AND');
$query_c->compare('description', $query, true, 'OR');
endif;
if ($category):
$join = new CDbCriteria;
$join->alias = 'P';
$join->join='LEFT JOIN product_x_category as P_x_c ON P.id = P_x_c.product_id';
$join->compare('P_x_c.category_id', '='.Category::model()->find('path=?', array($category))->id);
endif;
if ($query && $category):
$criteria = $query_c->mergeWith($join);
elseif ($query):
$criteria = $query_c;
elseif ($category):
$criteria = $join;
endif;
在 $query_c->mergeWith($join) 之后,我期望 $criteria 类似于
LEFT JOIN product_x_category as P_x_c ON (P_x_c.id = P.id)
WHERE P_x_c.category_id = x
AND (P.name LIKE '%query%' OR P.description LIKE '%query%')
但相反,我得到 $criteria == null...
这里出了什么问题?这不应该工作吗?
【问题讨论】: