Нарушение ограничения целостности: 1052 Столбец prof_id, в котором предложение неоднозначно Laravel - PullRequest
0 голосов
/ 11 ноября 2018

То, что я пытаюсь сделать, очень просто: выполнить запрос с некоторыми отношениями и задать для этого отношения условие 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

Все еще застрял,

Спасибо за любую помощь!

1 Ответ

0 голосов
/ 11 ноября 2018

Добавьте имя таблицы с вашим полем, так как в обеих таблицах указан prof_id.

$allquestions = userQuestion::with('getanswer','getusername','getbounty','gettags')
           ->whereHas('gettags', function($q) use($value) {

       $q->where('question_profskill.prof_id', '=', $value); //question_profskill or prof_skills
})
->orderBy('created_at','Desc')->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...