То, что я пытаюсь сделать, очень просто: выполнить запрос с некоторыми отношениями и задать для этого отношения условие where. Запрос предполагает получение вопросов со связанными отношениями, НО предложение where для тегов говорит только о получении вопросов с отправленный тег ($ value).
userQuestion Модель :
<?php
namespace App;
class userQuestion extends Model
{
protected $table = "question";
public $primaryKey = "question_id";
protected $fillable = ['question_id'];
public function gettags() {
return $this->belongsToMany('App\Profskills','question_profskill',"question_id","prof_id");
}
}
Запрос
$allquestions = userQuestion::with('getanswer','getusername','getbounty','gettags')
->whereHas('gettags', function($q) use($value) {
$q->where('prof_id', '=', $value);
})
->orderBy('created_at','Desc')
->get();
проблема в том, что она дает мне эту ошибку
QueryException in Connection.php line 729:
SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'prof_id' in
where clause is ambiguous (SQL: select * from `question` where exists
(select * from `prof_skills` inner join `question_profskill` on
`prof_skills`.`prof_id` = `question_profskill`.`prof_id` where `question_profskill`.`question_id` = `question`.`question_id` and
`prof_id` = 1) order by `created_at` desc)
столбец существует, и если я переключу столбец на qp_id (PrimaryKey), он будет работать, и Столбцы будут из сводной таблицы, к которой я пытаюсь получить доступ
Сделал поиск в Google, что я сделал:
1-место, заполняемое с помощью 'prof_id' в модели (так как у меня есть модель для сводной таблицы, я сделал то же самое)
2-try => где вместо whereHas
Все еще застрял,
Спасибо за любую помощь!