我正试图让雄辩的渴望加载工作,但它一直在hasmany表中寻找不正确的列名

oxosxuxt  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(241)

我有两个模型。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”。什么告诉雄辩的名字,它应该寻找外键时,它是急于加载?我能告诉它该用什么吗?或者我必须围绕它的先入之见来设计我的数据库吗?

k0pti3hp

k0pti3hp1#

它正在寻找 email_template_id 因为它根据关系的名称生成外键名称。在这种情况下, emailTemplate 变成 email_template_id . 你有两个选择来解决这个问题。
更改关系名称
您只需将方法的名称从 emailTemplatetemplate .

指定密钥名称
您可以指定关系上的键名称。你可以把第二个参数传给 belongsTo 方法。所以它会变成:

return $this->belongsTo('App\Model\EmailTemplate', 'template_id');

相关问题