表“tbl_category”没有名为“select”的列?

时间:2014-02-25 17:21:38

标签: php yii

如何在model()->findByAttributes()中运行'或'条件?

这是我的代码:

 $criteria->condition='url_title_en=:x OR url_title_da=:x';
 $criteria->params=array(':x'=>$_GET['purl_title']);
 $parentcat = Category::model()->findByAttributes($criteria);

但是我收到了这个错误:

  

表“tbl_category”没有名为“select”的列。

2 个答案:

答案 0 :(得分:3)

你可以像这样使用OR

$criteria=new CDbCriteria();
$criteria->select='category_id';
$criteria->condition='url_title_en=:x';
$criteria->addCondition('url_title_da=:x','OR');
$criteria->params=array(':x'=>$_GET['purl_title']);

在上面的代码中,addCondition使用OR运算符追加额外条件。现在如果你期望多个记录,那么你可以使用

$parentcat = Category::model()->findAll($criteria);

如果你期望单曲,你可以使用

$parentcat = Category::model()->find($criteria);

您在此处使用的是您正在将标准传递给函数FindByAttributes(),该函数查找传递给它的属性的记录。现在,您传递的是条件,它会将第一个单词作为“选择”,因为条件会将您的查询翻译为"select * where category_id=3"。现在findByAttributes()将其作为属性并尝试找到它。这就是为什么它显示错误,tble_category找不到select.Here是yii的官方文档http://www.yiiframework.com/doc/api/1.1/CActiveRecord#findAll-detail

答案 1 :(得分:1)

您的代码唯一的问题是您使用的是findByAttributes而不是findAll

$criteria            = new CDbCriteria;
$criteria->condition = '`url_title_en` = :uri OR `url_title_da` = :uri';
$criteria->params    = array(':uri' => $_GET['purl_title']);
$records               = Category::model()->findAll($criteria);
// print all records fetched.
print_r($records);