Я пытаюсь заставить Eloquent активно работать, но он продолжает искать неправильное имя столбца в таблице hasMany - PullRequest
0 голосов
/ 15 октября 2018

У меня две модели.EmailTemplate и EmailBody.EmailBody имеет внешний ключ идентификатора EmailTemplate.В моих моделях у меня есть:

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_template_id.Внешний ключ в таблице email_bodys просто называется template_id.Что говорит eloquent имя, которое нужно искать для внешнего ключа, когда он активно загружается?Могу ли я сказать ему, что использовать, или мне нужно спроектировать базу данных с учетом ее предубеждений?

1 Ответ

0 голосов
/ 15 октября 2018

Он ищет email_template_id, поскольку генерирует имя внешнего ключа на основе имени отношения.В этом случае emailTemplate становится email_template_id.У вас есть два варианта решения:

Изменить имя отношения

Вы можете просто изменить имя метода с emailTemplate на template.

ИЛИ

Укажите имя ключа

Вы можете указать имя ключа в отношении.Вы можете передать второй аргумент методу belongsTo.Так бы и стало:

return $this->belongsTo('App\Model\EmailTemplate', 'template_id');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...