我想創建一個CDbCriteria將用於一個CActiveDataProvider,我需要查詢多對多關係的另一端的值。Yii MANY_TO_MANY和CDbCriteria
我有以下表格: 秩序,user_order和用戶
的關係宣告正確,所以我可以訪問 $命令 - >用戶[0]和正確看到的數據。
我試圖建立以下條件:
$criteria=new CDbCriteria;
$criteria->with = array('users');
if (isset($_SESSION['hideCard'])){
$criteria->condition = "fname != 'Card'";
}
return new CActiveDataProvider(get_class($this), array(
'criteria'=>$criteria,
'pagination'=>array('pageSize'=>40)
));
這基本上意味着,如果一個會話變量設置我想隱藏所有從DataProvider的「一卡通」的FNAME用戶。
關於如何在多對多關係中實現這一點的任何想法?
我試過了,而且越來越未知列。我有3個表格,順序,用戶和user_order,關係被定義爲Order對象中的'users'。 –
你可以看到爲關係生成的SQL,它是否包括'users'表,如果是的話,它叫什麼/它是什麼列。 – Paystey
SELECT't'.'id' AS''t0_c0','t'.business_id' AS't0_c1', 't'.service' AS''t0_c2','t'.discount' AS''t0_c3' ,'t'.'balance' AS 't0_c4','t'.open_time' as't0_c5','t'.status' as't0_c6', 't'.call_waiter' AS't0_c7' ,'t'.'decimals' AS't0_c8','t'.tstamp' AS 't0_c9','t'.station_name' as''t0_c10','t'.ext_order' as't0_c11', 't'.'waiter' AS''t0_c12','t'.billnum' AS't0_c13' FROM'order'' t' Where (users.fname!='Card')Limit 40. –