SQLSTATE [42S22]: Столбец не найден: 1054 Неизвестный столбец 'answers.question_id' в 'предложении where' - PullRequest
0 голосов
/ 28 марта 2019

Я пытаюсь установить отношение
Вопрос hasMany Ответ

Question.php

public function answers()
{
   return $this->hasMany(Answer::class);    
}

, затем отображаются ответы на вопрос в show.blade.php как:

@foreach($question->answers as $answer) 
    {{$answer->ans}} //ans is the answers body from database
@endforeach

Answers table in database

Получение этой ошибки:

SQLSTATE [42S22]: столбец не найден: 1054 Неизвестный столбец'answers.question_id' в 'предложении where' (SQL: выберите * из answers, где answers. question_id = 5 и answers. question_id не равно нулю) (представление: C: \ Users \ harsh\ sa1 \ resources \ views \ questions \ show.blade.php)

Ответы [ 3 ]

1 голос
/ 28 марта 2019

Это связано с тем, что в модели laravel по умолчанию используется вопрос_id при использовании отношения.вместо этого вы должны упомянуть явно.Измените свое отношение в файле модели, как показано ниже,

  public function answers()
  {
    return $this->hasMany(Answer::class, 'q_id', 'id');     
  }
0 голосов
/ 28 марта 2019

Попробуйте обновить Answer::class непосредственно для класса вашей модели, который может быть следующим:

public function answers()
{
   return $this->hasMany('App\Models\Answer', 'q_id', 'id');    
}

или вот так:

public function answers()
    {
       return $this->hasMany('App\Answer', 'q_id', 'id');    
    }

или где бы вы ни создали свою модель.И добавьте ограничения foreign key и local key, которые в вашем случае должны быть q_id и id, где id - это идентификатор вопроса (первичный ключ).

0 голосов
/ 28 марта 2019

измените свой код на

public function answers()
{
   return $this->hasMany(Answer::class,'q_id','id');    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...