2015-09-05 52 views
1

我的模型:Yii的:不能得到關係

RetailItem:

public function relations() 
{ 
     // NOTE: you may need to adjust the relation name and the related 
     // class name for the relations automatically generated below. 
     return array(
        'retailItemDetail' => array(self::BELONGS_TO, 'Item', array('item_id' => 'id')), 
     ); 
} 

我的觀點:

$criteria = new CDbCriteria(); 
//$criteria->condition= "item_id = $id"; 
$items = RetailItem::model()->findAll($criteria); 

CVarDumper::dump($items[0],3,true); 

和Result:

...... 
[relations] => array() 
...... 

爲什麼關係array()是空?

回答

0

這裏例如:

//sql 
CREATE TABLE transaction (
    id INT(11) NOT NULL AUTO_INCREMENT, 
    userId INT(11) NULL DEFAULT NULL, 
    PRIMARY KEY (id) 
) 
COLLATE=utf8_general_ci 
ENGINE=InnoDB; 

CREATE TABLE user (
    id INT(11) NOT NULL AUTO_INCREMENT, 
    PRIMARY KEY (id) 
) 
COLLATE=utf8_general_ci 
ENGINE=InnoDB; 

INSERT INTO user (id) VALUES (1); 
INSERT INTO user (id) VALUES (2); 
INSERT INTO transaction (id, userId) VALUES (2, 1); 
INSERT INTO transaction (userId) VALUES (1); 

//models 
class User2 extends CActiveRecord 
{ 
    public function tableName() 
    { 
     return 'user'; 
    } 
    //... etc 
} 

class Transaction2 extends CActiveRecord 
{ 
    public function tableName() 
    { 
     return 'transaction'; 
    } 


    public function relations() 
    { 
     return array(
      'user' => array(self::BELONGS_TO, 'User2', 'userId'), 
     ); 
    } 
    //... etc 
} 

如何使用:

$test = Transaction2::model()->findAll(); 
echo '<pre>'; 
print_r($test[0]->user); 
echo '</pre>'; 
die(); 
+0

抱歉,我希望得到一些數據,就像$項目[0] - > retailItemDetail->的說明。但我不能。我不知道它有什麼問題,因爲我試圖將關係複製到另一個模型,並正確運行。 –

+0

** item_id **它是_RetailItemDetail_中的列,** id **它是_Item_中的列是對的嗎? –

+0

是的,item_id是RetailItem模型中的列。我在另一個模型中使用了相同的方法,這是工作。但我不能使用相同的關係函數是RetailItem模型。 –