我想创建一个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. –