Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Yii中的元表模型_Php_Database_Model_Yii_Relational - Fatal编程技术网

Php Yii中的元表模型

Php Yii中的元表模型,php,database,model,yii,relational,Php,Database,Model,Yii,Relational,我刚开始在Yii开发我的新项目,我对Yii和MVC结构都是新手 我想得到一些关于制作元表和该表模型的建议。假设我喜欢为一个用户存储几个聊天句柄。我已经创建了一个表来存储用户详细信息,如用户id、用户名、电子邮件等。。另一个表是我的元表,它的结构是id、user\u id、key、value 我想将这两个表关联到一个模型中,这样我就可以访问存储在元表中的key值,比如$user->yahoo 提前感谢。使用getter和setter。定义一个getYahoo方法,并在该方法中取消查找表以检索所需的

我刚开始在Yii开发我的新项目,我对Yii和MVC结构都是新手

我想得到一些关于制作元表和该表模型的建议。假设我喜欢为一个用户存储几个聊天句柄。我已经创建了一个表来存储用户详细信息,如用户id、用户名、电子邮件等。。另一个表是我的元表,它的结构是id、user\u id、key、value

我想将这两个表关联到一个模型中,这样我就可以访问存储在元表中的key值,比如$user->yahoo


提前感谢。

使用getter和setter。定义一个getYahoo方法,并在该方法中取消查找表以检索所需的值参见:


它将引导您完成一个与您想要做的类似的基本示例。请注意,如果使用外键设置数据库,Gii工具将在模型中为您创建此关系。如果您正在使用MySql、MySqlWorkbench或其他类似的工具来管理外键,则只需确保您正在使用InnoDB类型的表。

只需为元表和主表创建一个模型即可。然后,如果您与该表有forign键关系,那么您将能够作为主表的属性访问元表模型。为了让事情更清楚:

假设我们有两张桌子:

顾客 -身份证 -名字 -地址 -名字 -电子邮件

顾客元 -身份证 -客户识别码 -元键 -元值

您将使用Gii为这两个表生成两个模型。然后,如果您使用MySQL和InnoDB表并在customer.id->customer\u meta.customer\u 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 />';
}
//这将获取第一个元值
$model=新客户;
$customer=$model->loadModel(3);
echo$customer->customer\u meta[0]->meta\u value;
//或者通过元数据进行循环
foreach($customer->customer\u meta作为$meta){
回显“名称:”。$meta->meta_键。“值:”。$meta->meta_键。“
”; }