Модель метатаблицы в Yii

Я только начал разрабатывать свой новый проект в Yii, я новичок в Yii, а также в фреймворках и структуре MVC.

Я хотел бы получить несколько советов по созданию мета-таблиц и модели для этой таблицы. Предположим, мне нужно сохранить несколько дескрипторов чата для пользователя. Я создал таблицу для хранения сведений о пользователе, таких как user_id, user_name, электронная почта... и еще одну таблицу, которая является моей мета-таблицей со структурой id, user_id, ключ, значение.

Я хотел бы связать эти две таблицы в одну модель, чтобы иметь доступ к значению ключа, хранящемуся в метатаблице, например $user->yahoo.

Заранее спасибо.


person Alex Jose    schedule 24.06.2011    source источник
comment
Заголовок stackoverflow.com/questions/3309084/ ; stackoverflow.com/questions/3579852/   -  person hakre    schedule 24.06.2011


Ответы (3)


Просто создайте модель для метатаблицы, а также для основной таблицы. Затем, если у вас есть отношение внешнего ключа к этой таблице, вы сможете получить доступ к модели метатаблицы как к свойству первичной таблицы. Чтобы было понятнее:

Скажем, у нас есть эти две таблицы:

Клиент -id -имя -адрес -имя -электронная почта

customer_meta -id -customer_id -meta_key -meta_value

вы бы сгенерировали две модели, используя Gii для обеих этих таблиц. Затем, если вы используете таблицы MySQL и InnoDB и создаете отношение внешнего ключа между customer.id -> customer_meta.customer_id, вы сможете получить доступ к метаданным в модели клиента как таковой:

// this will echo get the first meta value
$model = new customer;
$customer = $model->loadModel( 3 );
echo $customer->customer_meta[0]->meta_value;

// or loop through the meta data
foreach( $customer->customer_meta as $meta ) {

   echo 'Name: '.$meta->meta_key.' Value: '.$meta->meta_key.'<br />';
}
person Community    schedule 20.01.2012

см.: http://www.yiiframework.com/doc/guide/1.1/en/database.arr

Он проведет вас через базовый пример, похожий на то, что вы хотите сделать. Обратите внимание: если вы настроите свою базу данных с внешними ключами, инструменты Gii создадут это отношение для вас в вашей модели. Если вы используете MySql, MySqlWorkbench или другие подобные инструменты, которые могут быть полезны для управления внешними ключами, вам просто нужно убедиться, что вы используете таблицы типов InnoDB.

person ldg    schedule 24.06.2011

использовать геттеры и сеттеры. Определите метод getYahoo и в этом методе выполните таблицу поиска, чтобы получить нужное значение.

person Chux    schedule 24.06.2011