Yii框架:关系返回NULL

Yii框架:关系返回NULL,yii,frameworks,Yii,Frameworks,我在申请中遇到了关系问题。我有以下表格: 职位: id |标题|文本|标签 1 |拉拉|拉拉| 1 邮政标签: id |名称 1 |安全 2 |其他 两种型号:Post,postlab 和关系在post模型中: 'postLabel'=>数组(self::HAS_ONE,'postLabel','id') 当我使用此选项时: $model=$this->loadModel('Post',1) 变量转储($model->postlab) 它返回NULL,但当我使用: $model=$this->l

我在申请中遇到了关系问题。我有以下表格:

职位:

id |标题|文本|标签

1 |拉拉|拉拉| 1

邮政标签:

id |名称

1 |安全

2 |其他

两种型号:Post,postlab

关系在post模型中:

'postLabel'=>数组(self::HAS_ONE,'postLabel','id')

当我使用此选项时:

$model=$this->loadModel('Post',1)

变量转储($model->postlab)

它返回NULL,但当我使用:

$model=$this->loadModel('Post',1)

变量转储($model->title)

它返回“拉拉”

我哪里出错了


编辑:我看到在sql查询中使用了post id,但没有标签id。如何更改此设置?

您没有任何表或属性来连接这两个表

帖子只有
id | title | text | category
和帖子标签
id | name
,但我们怎么知道哪个标签属于哪个帖子

在post_标签中,您应该有一个类似于
post_id
的字段,并且在关系中您将声明

'postLabel' => array(self::HAS_ONE, 'PostLabel', 'post_id'),

然后你会得到一些东西

您没有任何表或属性来进行两个表之间的连接

帖子只有
id | title | text | category
和帖子标签
id | name
,但我们怎么知道哪个标签属于哪个帖子

在post_标签中,您应该有一个类似于
post_id
的字段,并且在关系中您将声明

'postLabel' => array(self::HAS_ONE, 'PostLabel', 'post_id'),

然后你会得到一些东西

您的关系使用了错误的外键列。它必须是
标签

'postLabel' => array(self::HAS_ONE, 'PostLabel', 'label'),

您的关系使用了错误的外键列。它必须是
标签

'postLabel' => array(self::HAS_ONE, 'PostLabel', 'label'),

我知道这听起来有悖常理(我花了一些时间才习惯),但实际上你需要使用“属于关系”,而不是“拥有关系”

检查此链接:

关键点:属于关系的字段表示此模型中的一个字段指向另一个模型中的主键;在这种情况下,当前模型拥有链接字段

关键点:一个关系表示另一个模型有一个指向该模型主键的链接字段;在这种情况下,相关模型拥有链接字段

因为标签是指向另一个(PostLabel)模型主键的(PostLabel)模型中的键,所以需要使用“属于关系”

因此,您的关系定义应该如下所示:

'postLabel' => array(self::BELONGS_TO, 'PostLabel', 'label')

我知道这听起来有悖常理(我花了一些时间才习惯),但实际上你需要使用“属于关系”,而不是“拥有关系”

检查此链接:

关键点:属于关系的字段表示此模型中的一个字段指向另一个模型中的主键;在这种情况下,当前模型拥有链接字段

关键点:一个关系表示另一个模型有一个指向该模型主键的链接字段;在这种情况下,相关模型拥有链接字段

因为标签是指向另一个(PostLabel)模型主键的(PostLabel)模型中的键,所以需要使用“属于关系”

因此,您的关系定义应该如下所示:

'postLabel' => array(self::BELONGS_TO, 'PostLabel', 'label')

什么返回空值?
$model
为空还是
$model->postlab
?请发布生成的SQL查询。$model->postlab返回NULL。查询:“选择
postLabel
id
作为
t1\u c0
postLabel
name
作为
t1\u c1
postLabel
中(
postLabel
id
='1009')`What返回空值?”?
$model
为空还是
$model->postlab
?请发布生成的SQL查询。$model->postlab返回NULL。查询:“选择
postLabel
id
作为
t1\u c0
postLabel
name
作为
t1\u c1
postLabel
中(
postLabel
id
='1009')`“对不起,我写的是“类别”,但我的意思是“标签”。我想加入'label'(来自post)和'id'(来自post_label)。这是一种方法吗?对不起,我写的是“分类”,但我的意思是“标签”。我想加入'label'(来自post)和'id'(来自post_label)。有办法吗?我就是这个意思!非常感谢你!我就是这个意思!非常感谢你!