Yii CDbCriteria获取列中具有相同字符的所有记录

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

我不擅长sql,我正在为列中具有选定id的所有记录创建CListView,以显示在页面上。。只是为了练习,我想添加一个下拉列表来选择另一种排序(id DESC已经存在)

我有一个包含以下列的表:id、Name、Project\u id、User\u id、Assigned等等

现在,这是我的代码:

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,已分配)