Yii framework - сбор значения поля из другой модели - PullRequest
0 голосов
/ 21 июля 2011

Я боролся с этим, у меня есть две модели и я показываю данные в Cgridview с одной моделью, эта модель содержит некоторые идентификаторы, значения которых находятся в другой таблице

Итак, я добавил

'value' => 'TblAreaoflaw :: model () -> FindByPk ($ data-> typeoflaw) -> areaoflaw'

, которая выдает эту ошибку

"Попытка получить свойствоnon-object "

Возможно, по этой причине некоторые записи не существуют в TblAreaoflaw.Разве мы не можем проверить эту строку через isset?

Когда я ставлю статическое значение, оно работает хорошо, например

'value' => 'TblAreaoflaw :: model () -> FindByPk (5) -> areaoflaw ',

Может кто-нибудь помочь, пожалуйста

большое спасибо

Ответы [ 3 ]

1 голос
/ 24 июля 2011

Вы получаете ошибку, потому что это выражение TblAreaoflaw::model()->FindByPk($data->typeoflaw) возвращает null. Это означает, что вы фактически пытаетесь получить null->areaoflaw, который не будет работать (вот что объясняет сообщение об ошибке «Попытка получить свойство необъекта» ).

По-моему, $data->typeoflaw возвращает несуществующий первичный ключ для модели TblAreaoflaw.

0 голосов
/ 23 июля 2011

Попробуйте:

 'value'=> '(TblAreaoflaw::model()->FindByPk($data->typeoflaw)->areaoflaw) ?
 : "default or null value"'

Очевидно, замените пустую строку на то, что вы хотите.Возможно, вам придется настроить условие для использования! Empty () или аналогичного, но посмотрите, как оно работает.(И если вы делаете это или не используете PHP 5.3, используйте полное троичное выражение.)

0 голосов
/ 21 июля 2011

Убедитесь, что:

TblAreaoflaw на самом деле является моделью, я сомневаюсь, что это Areaoflaw

У вас есть указанный в базе данных первичный ключ, который является id (5) вы проходите

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...