Yii CDbCriteria获取列中具有相同字符的所有记录
我不擅长sql,我正在为列中具有选定id的所有记录创建CListView,以显示在页面上。。只是为了练习,我想添加一个下拉列表来选择另一种排序(id DESC已经存在) 我有一个包含以下列的表:id、Name、Project\u id、User\u id、Assigned等等 现在,这是我的代码:Yii CDbCriteria获取列中具有相同字符的所有记录,yii,Yii,我不擅长sql,我正在为列中具有选定id的所有记录创建CListView,以显示在页面上。。只是为了练习,我想添加一个下拉列表来选择另一种排序(id DESC已经存在) 我有一个包含以下列的表:id、Name、Project\u id、User\u id、Assigned等等 现在,这是我的代码: public function actionView($id) { $model = $this->loadModel($id); $criteria
public function actionView($id)
{
$model = $this->loadModel($id);
$criteria = new CDbCriteria(array(
'order'=>'id desc',
'condition'=>'Project_id='.$id
));
$dataProvider = new CActiveDataProvider('Task', array(
'criteria'=>$criteria
));
$this->layout = 'column2';
$this->render('view', array('model'=>$model, 'dataProvider'=>$dataProvider));
}
我正在选择所有具有请求的项目id的记录,因此我尝试做的是在“已分配”列上添加另一个条件选择,而我不知道如何做。问题是,其中一些记录有多个已分配的单个记录,并将其保存为“1,2,5,6”。因此,如果我添加另一个指定为1的选择,它将只显示指定为“1”的那些记录,而不是指定为“1,3,5,6”的那些记录。。我正在考虑对字符串进行搜索,但我不知道它在sql上是如何工作的(因为我对sql不太了解)试试这个-
$criteria = new CDbCriteria(array(
'order'=>'id desc',
'condition'=>'Project_id='.$id.' AND find_in_set($assigned, Project_id)'
));
但是这里$assigned
只能有一个值,即$assigned=1
或$assigned=2
如果$assigned=“1,2”
其中1,2
本身将被视为单个值,因此仅当模式在表中为1,2..
而不是2,1,
我希望它能提供一些想法。找到了我的解决方案。。似乎im使用的是SQLite,而SQLite不支持
find\u in\u set()
。我必须使用(','| |赋值的| |','),比如“%”,1,%”。像这样
$criteria = new CDbCriteria(array(
'order'=>'id desc',
'condition'=>'Project_id='.$id.' AND ("," || Assigned || ",") LIKE "%,5,%"'
));
当我添加
find_in_set()
时,它会给我带来错误,我尝试了find_in_set(1,Project_id)
我该怎么做?我在Yii中使用了find_in_set()
同样的方法,效果很好。你能在这里提到你遇到的错误吗。很容易找到相应的解决方案。它给出了以下错误:CDbCommand未能执行SQL语句:CDbCommand未能准备SQL语句:SQLSTATE[HY000]:一般错误:1没有此类函数:在\u集中查找。执行的SQL语句是:从“任务”t中选择COUNT(*),其中Project_id=1,并在_集中查找(1,已分配)