2015-09-05 55 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模型。 –