2014-08-29 65 views
-5

在我的数据库,我有项目表至极有如何检查,如果阵列auntheticated用户从数据库

project 
    id | title | users | 
    1 | First | 1,2,3 | 
    2 | Second| 2,6 | 

如何检查的Yii ::应用程序() - 包含在用户现场>用户> ID?我想检查,如果true然后在gridview中显示行。

我必须使用哪个$标准?请建议解决的路径。

+0

检查[这](http://stackoverflow.com/questions/11397700/how-use-like-in -yii-query-builder)和[this](http://www.yiiframework.com/forum/index.php/topic/29747-using-mysql-regexp-in-cdbcriteria/)。这有帮助吗? – katsanva 2014-08-29 14:32:04

回答

1

使用LIKE查询为检查您的user id是否存在于users column

$user = Yii::app()->user->id; 
$result = Yii::app()->db->createCommand('SELECT * FROM project WHERE users LIKE "%'.$user.'%"')->queryAll(); 
if(count($result)){ 
    //Your other scripts to show in grid view 
} 

如果你有Project模型class那么你也可以使用:

$user = Yii::app()->user->id; 
$criteria = new CDbCriteria; 
$criteria->select = '*'; 
$criteria->compare('t.users', $user, true); 
$results = Project::model()->findAll($criteria); 
+1

像这样构建查询是不安全的,因为它打开了SQL注入的可能性。 Yii的经验是,我很少需要使用普通的旧SQL查询,因为大多数情况下可以使用CActiveRecord方法和其他可用(和更安全)的数据库类来完成。 另请参阅: http://www.yiiframework.com/wiki/199/creating-a-parameterized-like-query/ $ q = new CDbCriteria(); $ q-> addSearchCondition('content',$ userId); $ projects = Project :: model() - > findAll($ q); – 2014-08-30 07:51:56