Eloquent не вызывает таблицу - PullRequest
0 голосов
/ 28 мая 2018

Я пытаюсь отфильтровать результаты по имени отношения

$questions = Question::whereHas('category', function ($q) use ($coh) {
   $q->where('id', $coh->id);
})->get();

И я получаю следующую ошибку:

SQLSTATE [42S22]: столбец не найден: 1054Неизвестный столбец 'questions.question_category_id' в 'предложении where' (SQL: выберите * из question_categories, где questions. question_category_id = question_categories. id и question_categories. id = 1 предел 1).

Чтение ошибки очевидно, почему она не работает, потому что eloquent или я не вызываем таблицу вопросов, не должна ли она вызываться автоматически, потому что я задаю вопрос :: ??

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Просто перейдите к вашей Вопрос модели и следующей строке в вашей категории ()

class Question extends Model{
   public function category(){
      return $this->hasMany('App\Category', 'category_id');
   }
}

Затем попробуйте нажать на запрос

$questions = Question::whereHas('category', function ($q) use ($coh) {
    $q->where('id', $coh->id);
})->get();
0 голосов
/ 28 мая 2018

Если я правильно понял, связь должна состоять в том, что Вопрос относится к категории и Категория имеет много вопросов .

Таким образом, для фильтрации вы можете сделать эторазные способы в зависимости от атрибутов вашей таблицы.Если вы хотите сделать это с помощью вопросов, поскольку у вас есть category_id в качестве внешнего ключа, вы можете сделать что-то вроде этого ( при условии, что ваше поле внешнего ключа имеет имя = 'question_category_id' ):

$questions = Question::("question_category_id", "=", $coh);

Как уже упоминалось, вы также можете использовать модель категории для доступа ко всем вопросам , относящимся к этой категории, поскольку вы должны были указать в своей модели категории, что каждая категория имеетMany Вопросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...