2013-04-27 2 views
1

В phpmyadmin я создал 2 таблицы в базе данных mysql.Yii crud scaffolding - имя столбца внешнего ключа вместо id

, например - таблица продукт

tbl_product 
id - int, pk, autoincrement 
name - varchar 20 
price - decimal 
category_id - int, fk, notnull 

tbl_category 
id - int, pk, autoincrement 
name - varchar(20) 

сверху, вы можете увидеть, что продукт будет содержать значение для CATEGORY_ID.

У меня автогенерирована модель для tbl_product в gii.

Я пытаюсь создать классы crud для модели tbl_product, однако, когда я это делаю, я хочу отображать tbl_category.name как метку и выпадающий список, а не идентификатор, содержащийся в tbl_product.category_id.

Возможно ли это?

+1

http://www.yiiframework.com/doc/guide/1.1/en/database.arr – Tim

ответ

1

В модели (часть отношений):

'category' => array(self::BELONGS_TO, 'tbl_category', 'category_id') 

С учетом, например:

...isset($model->category) ? $model->category->name... 

Одно замечание - если вы собираетесь показывать много продуктов с соответствующей категории имя сразу - вы должны использовать $criteria->with = 'tbl_category'; $criteria->together = true'. Если вы это сделаете - yii построит запрос для получения всех необходимых данных сразу. В противном случае yii запросит базу данных для имени ctaegory для каждого отображаемого вами сообщения.

Исправьте меня, если я ошибаюсь, но я помню, как это работает.

Смежные вопросы