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']