从关系中获取全名并在视图中显示

时间:2018-03-25 11:11:09

标签: php yii2

这是我在模型中的关系

 public function getUser()
    {
        return $this->hasOne(User::className(), ['id' => 'user_id']);
    }

     public function getTaskCreatedBy()
    {
        return $this->hasOne(User::className(), ['id' => 'taskCreatedBy']);
    }   

现在我想使用taskcreatedby并获得我这样做的用户fullname

 Created By:<?php echo $model->taskCreatedBy->fullname?>

但是,我收到错误说:试图获得非对象的属性

2 个答案:

答案 0 :(得分:2)

检查真实的列名可能是你的db列名不是taskCreatedBy但有些不同,例如:(或其他列名)

public function getTaskCreatedBy()
{
    return $this->hasOne(User::className(), ['id' => 'task_created_by']);
}  

答案 1 :(得分:0)

所以你有2个关系连接到这个模型/表。 1. User表连接到此模型中的user_id字段/数据库列。 2. TaskCreatedBy表连接到此模型中的taskCreatedBy字段。

这个型号的表名是什么?在tableName函数中找到。

public static function tableName()
    {
        return '???????????????';
    }

了解以下代码:

['id' => 'taskCreatedBy']

可归纳如下:

['fieldname在外国模型表中称为'id',名为TaskCreatedBy'=&gt; 'fieldname在当前模型表中称为taskCreatedBy'即。当前模型表中的外键字段/数据库列的名称...您未提供给我们的此模型/文件/表的名称]

验证'taskCreatedBy',如上面的代码片段,是当前模型表中字段的实际名称,即。属于上述代码所在文件的表。

1

我会简化您的表名,以避免在必须输入关系代码时出现大写和小写问题

<?php echo $model->taskCreatedBy->fullname?>  

2

并且也不使用像taskCreatedBy这样的字段/数据库列,它与表名TaskCreatedBy非常相似。我的建议是你将表TaskCreatedBy中的字段taskCreatedBy重命名为taskcreatedby_id。

3

在上面的代码片段中

['id' => 'taskCreatedBy']

taskCreatedBy应该是小写的,并且对应于当前模型/表中存在的实际字段/数据库列名,最好是taskcreatedby_id。