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

Php 从关系中获取全名并显示在视图中,php,yii2,Php,Yii2,这就是我模型中的关系 public function getUser() { return $this->hasOne(User::className(), ['id' => 'user_id']); } public function getTaskCreatedBy() { return $this->hasOne(User::className(), ['id' => 'taskCreatedBy

这就是我模型中的关系

 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?>
创建人:

但是,我得到的错误是:尝试获取非对象的属性检查真正的列名可能是您的db列名称不是taskCreatedBy,而是一些不同的东西,例如:(或其他列名)


因此,有两个关系连接到此模型/表。 1.用户表连接到此模型中的用户id字段/数据库列。 2.TaskCreatedBy表连接到此模型中的TaskCreatedBy字段

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

public static function tableName()
    {
        return '???????????????';
    }
了解以下代码:

['id' => 'taskCreatedBy']
可概括如下:

['fieldname在名为TaskCreatedBy的外部模型表中称为'id'=>'fieldname在当前模型表中称为TaskCreatedBy'即当前模型表中外键字段/数据库列的名称…您尚未提供给我们的此模型/文件/表的名称]

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

1. 我会简化表名,以避免在必须键入关系代码时出现大小写问题

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

taskCreatedBy应为小写,并与当前模型/表中存在的实际字段/数据库列名(最好是taskCreatedBy_id)相对应

显示您的相关控制器操作验证您是否有试图调用关系的
$model
的关联记录。是的,它们之间存在关联try print\r($model->taskCreatedBy)以确保此处存在对象,并将结果放在此处请:)我尝试了它,它打印了idI位,就是这样,例如,错过了列名。是的,这就是case@RajanChaulagain大小写匹配??数据类型相同??然后首先使用var_dump($model)检查$model是否为null,然后使用var_dump($model->taskCreatedBy)检查$model->taskCreatedBy是否为null,并让我知道谢谢您的关注我已经解决了问题。再次感谢您的关注我已经解决了问题。没问题Rajan。
<?php echo $model->taskCreatedBy->fullname?>  
['id' => 'taskCreatedBy']