неверное отношение yii HAS_MANY - PullRequest
2 голосов
/ 02 марта 2011

У меня возникли проблемы при создании простого приложения Poll в Yii.

У меня есть следующие таблицы:

create table poll (
    id integer not null auto_increment,
    title varchar(255) not null,
    views integer not null default 0,
    created_at timestamp not null default NOW(),
    PRIMARY KEY(id)
);

create table choice (
    poll_id integer not null,
    choice varchar(200) not null,
    votes integer not null default 0
);

У меня есть ActiveRecord для опроса, определенного как:

class Poll extends CActiveRecord
{
...
    public function relations()
    {
        return array(
            'choices'=>array(self::HAS_MANY, 'Choice', 'poll_id'),
        );
    }
...
}

Однако, когда я использую следующий код:

$p = Poll::model()->findByPk($id)->with('choices')->findAll();

Это дает мне обратную трассировку:

Invalid argument supplied for foreach()

#0  
+  /home/william/scm/bmbraga/clickpoll/yii/framework/db/ar/CActiveFinder.php(791): CJoinElement->populateRecord(CJoinQuery, array("1", "0", "", "2011-02-28 13:11:41", ...))
#1  
+  /home/william/scm/bmbraga/clickpoll/yii/framework/db/ar/CActiveFinder.php(736): CJoinElement->populateRecord(CJoinQuery, array("1", "0", "", "2011-02-28 13:11:41", ...))
#2  
+  /home/william/scm/bmbraga/clickpoll/yii/framework/db/ar/CActiveFinder.php(395): CJoinElement->runQuery(CJoinQuery)
#3  
+  /home/william/scm/bmbraga/clickpoll/yii/framework/db/ar/CActiveFinder.php(72): CJoinElement->find(CDbCriteria)
#4  
+  /home/william/scm/bmbraga/clickpoll/yii/framework/db/ar/CActiveRecord.php(1242): CActiveFinder->query(CDbCriteria, true)
#5  
+  /home/william/scm/bmbraga/clickpoll/yii/framework/db/ar/CActiveRecord.php(1323): CActiveRecord->query(CDbCriteria, true)
#6  
+  /home/william/scm/bmbraga/clickpoll/poll/protected/controllers/PollController.php(156): CActiveRecord->findAll()

Кто-нибудь есть какие-либо идеи, что я делал неправильно?Я совсем новичок в Yii

Спасибо

1 Ответ

14 голосов
/ 02 марта 2011

Хорошо, я обнаружил проблему.

Таблица опроса нуждается в первичном ключе.

...