我有两张桌子。
生(ID,电子邮件,密码,f_name,l_name,UNIQUE_ID,CREATE_DATE,LAST_UPDATE)
评论(ID,ad_id,commented_user,评论,CREATE_DATE,LAST_UPDATE)
表关系 - > comments.commented_user = students.email
评论课
class Comments extends \yii\db\ActiveRecord
{
//public $commented_user_fName;
/**
* @inheritdoc
*/
public static function tableName()
{
return 'comments';
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['comment'], 'string'],
[['create_date', 'last_update'], 'safe'],
[['ad_id', 'commented_user'], 'string', 'max' => 64],
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id' => 'ID',
'ad_id' => 'Ad ID',
'commented_user' => 'Commented User',
'comment' => 'Comment',
'create_date' => 'Create Date',
'last_update' => 'Last Update',
];
}
public function beforeSave($insert) {
if ($this->isNewRecord){
$this->commented_user = $_SESSION['login_student_email'];
$this->create_date = new Expression('NOW()');
}
return parent::beforeSave($insert);
}
public function getStudentName(){
$this->hasOne(Students::className() ,['commented_user' => 'email']);
}
}
我的评论Controller Index methord
public function actionIndex($id)
{
$model = new Comments();
$model->setAttribute('ad_id',$id);
$searchModel = new CommentsSearch();
$dataProvider = $searchModel->search(["CommentsSearch"=>['ad_id'=>$id]]);
return $this->renderAjax('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
'model' => $model,
]);
}
我尝试在ListView中获取学生表的f_name
<?=
ListView::widget([
'dataProvider' => $dataProvider,
'layout' => "{items}",
'itemView' => 'view',
]);
?>
下面的项目视图文件代码
<a href="#"><?= $model->studentName->f_name ?></a>
我收到了这个错误
PHP注意 - yii \ base \ ErrorException 试图获得非对象的属性
在此行<a href="#"><?= $model->studentName->f_name ?></a>
我的代码出了什么问题。请帮帮我
答案 0 :(得分:0)
.
是连接运算符,因此$model->studentName.f_name
不会被视为$model->{studentName.f_name}
而是被视为{$model->studentName} . f_name
。
您可能需要使用$model->studentName->f_name
。
答案 1 :(得分:0)
您应该像使用任何其他模型一样以$ model-&gt; studentName-&gt; f_name的身份访问该属性