yii

2012-05-19 13 views
5

में एक मानदंड के साथ एक CActiveDataProvider पुनर्प्राप्त करें मैं yii से शुरू कर रहा हूं और मुझे एक मानदंड के साथ एक CActiveDataProvider फ़िल्टर करने का प्रयास करते समय कुछ परेशानी है।yii

यह मेरा डेटाबेस मॉडल है:

Table   Columns 
Project   [id, name, status] 
userToProject [user_id,project_id,role] 
User    [id , ....] 

और मैं सूचकांक कार्रवाई स्थिति = समाप्त या जहां उपयोगकर्ता वर्तमान में है कि परियोजना को सौंपा गया है के साथ सभी परियोजनाओं को दिखाना चाहते हैं।

इसलिए परीक्षण उद्देश्यों के लिए उपयोगकर्ता आईडी को हार्ड-कोडिंग करना। यह मेरा कोड है:

$criteria=array(
      'order'=>'status desc', 
      'with'=>array(
       'userToProject','userToProject.user'=>array('alias'=>'user')), 
    ); 
$criteria['condition']='status=='.Project::STATUS_FINISHED; 
$criteria['condition'].=' OR user.id = 6'; 
$dataProvider=new CActiveDataProvider('Project', array(
      'criteria'=>$criteria, 
    )); 
$this->render('index',array(
      'dataProvider'=>$dataProvider, 
    )); 

लेकिन यह एक अपवाद अज्ञात स्तंभ कह फेंकता ' user.id। मैं क्या खो रहा हूँ? धन्यवाद

संपादित करें: त्रुटि कोड है:

Column not found: 1054 
Unknown column 'users.user_id' in 'where clause'. The SQL statement executed was: 
SELECT `t`.`id` AS `t0_c0`, `t`.`name` AS `t0_c1`, `t`.`description` AS `t0_c2`, 
`t`.`status` AS `t0_c3`, `t`.`creation_date` AS `t0_c4` FROM `pgp_project` `t` WHERE 
    (status=4 OR users.user_id=6) ORDER BY status desc LIMIT 10 
+1

SQL क्वेरी है कि यह चलाता है सहित पूर्ण त्रुटि संदेश, प्रदान की कोशिश करो। – DCoder

+0

हाँ सटीक एसक्यूएल और त्रुटि संदेश की आवश्यकता होगी –

+0

मेरे पास टेबल में कोई ट्रिगर नहीं है। मैं फिर से त्रुटि की जांच करने जा रहा हूं – Addev

उत्तर

14

इस

$criteria=new CDbCriteria(array(     
    'order'=>'status desc', 
    'with' => array('userToProject'=>array('alias'=>'user')), 
    'condition'=>'status='.Project::STATUS_FINISHED.' OR user.id = 6', 
)); 

$dataProvider=new CActiveDataProvider('Project', array(
    'criteria'=>$criteria, 
)); 

$this->render('index',array(
    'dataProvider'=>$dataProvider, 
));