【问题标题】:Model for meta table in YiiYii 中元表的模型
【发布时间】:2011-09-21 22:09:26
【问题描述】:
我刚开始在 Yii 中开发我的新项目,我是 Yii 以及框架和 MVC 结构的新手。
我想就制作元表和该表的模型获得一些建议。假设我想为一个用户存储几个聊天句柄。我创建了一个表来存储用户详细信息,例如 user_id、user_name、email.. 以及另一个表,它是我的元表,其结构为 id、user_id、key、value
我想将这两个表关联到一个模型中,以便我可以访问存储在元表中的键的值,例如 $user->yahoo。
提前致谢。
【问题讨论】:
标签:
php
database
model
yii
relational
【解决方案1】:
只需为元表和主表创建一个模型。然后,如果您与此表有外键关系,您将能够访问元表模型作为主表的属性。为了让事情更清楚:
假设我们有这两个表:
客户
-ID
-姓名
-地址
-姓名
-电子邮件
customer_meta
-ID
-客户ID
-meta_key
-meta_value
您将使用 Gii 为这两个表生成两个模型。然后,如果您使用 MySQL 和 InnoDB 表并创建外键关系 ebtween 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 />';
}
【解决方案3】:
使用 getter 和 setter。定义一个 getYahoo 方法,并在该方法中查找表以检索您想要的值