我在Buku和Guest之间建立了关系。我想在客人的电子邮件中添加链接下载电子书。表Buku中的字段link_dl
。
在common\models\Buku
public function getGuest()
{
return $this->hasOne(Guest::className(), ['id_buku' => 'id_buku']);
}
在common\models\Guest
public function getBuku()
{
return $this->hasMany(Buku::className(), ['id_buku' => 'id_buku']);
}
在Controller
if($model->load(Yii::$app->request->post()))
{
$value = Yii::$app->mailer->compose()
->setFrom('myaccount@gmail.com')
->setTo($model->email)
->setSubject('Download Ebook')
->setTextBody($model->buku->link_dl) //link download ebook $model->relationName->field_name
->send();
$model->save();
但是我收到了错误,
例外' yii \ base \ ErrorException'与消息'试图获得非对象的属性'
这里有什么问题?谢谢。 已解决
答案 0 :(得分:0)
您的关系getBuku
被声明为One-to-Many
,因此当您使用$model->buku
访问buku时,您会获得Buku
个模型的数组。
如果它真的是One-to-Many
类型的关系,你必须选择(使用任何类型的逻辑,或简单得到0索引)你需要的Buku
模型:
->setTextBody($model->buku[0]->link_dl)
如果该关系假设为一对一,则需要更改Guest
模型中的关系,然后按照代码访问link_dl
:
// common\models\Guest
public function getBuku()
{
return $this->hasOne(Buku::className(), ['id_buku' => 'id_buku']);
}
// Controller
->setTextBody($model->buku->link_dl)