2014-08-29 67 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