我有两个模型。emailtemplate和emailbody。emailbody具有emailtemplate id的外键。在我的型号中,我有:
class EmailTemplate extends Model
<snip>
{
public fuction emailBody()
return $this->hasMany('App\Models\EmailBody');
}
class EmailBody extends Model
<snip>
public function emailTemplate()
{
return $this->belongsTo('App\Model\EmailTemplate');
}
当我试图通过包含“->with('emailbody')”子句来贪婪地加载模板时,我收到以下错误:
"blah blah... Unknown column 'email_bodys.email_template_id' in where clause....
我不明白为什么它是寻找电子邮件\模板\标识栏。email\u body表中的外键称为“template\u id”。什么告诉雄辩的名字,它应该寻找外键时,它是急于加载?我能告诉它该用什么吗?或者我必须围绕它的先入之见来设计我的数据库吗?
1条答案
按热度按时间f0ofjuux1#
它正在寻找
email_template_id
因为它根据关系的名称生成外键名称。在这种情况下,emailTemplate
变成email_template_id
. 你有两个选择来解决这个问题。更改关系名称
您只需将方法的名称从
emailTemplate
至template
.或
指定密钥名称
您可以指定关系上的键名称。你可以把第二个参数传给
belongsTo
方法。所以它会变成: