Отношения модели запросов Laravel sql - PullRequest
0 голосов
/ 24 июня 2018

Предположим следующий пример:

Я получил таблицу автомобилей, их владельцев и таблицу их типов.

таблица автомобилей : id, owner_id, type_id

типы таблиц : имя, описание

Я хочу получить все типы, чей идентификатор НЕ в type_id в табличных автомобилях И их owner_id IS 1.

Я передаю владельца из представления и попробовал следующее:

public function show(Owner $owner)
    {

        $cartypes =CarTypes::all()->whereNotIn('id', function($query) { $query->table('cars')->select('type_id')->where('owner_id', '=', $owner->id); })->get();



        return view('sections.cars.show',compact('owner','cartypes'));


    }

Но получаю ошибку: Метод Illuminate \ Database \ Query \ Builder :: table не существует.

Является ли мой запросштраф?Может ли кто-нибудь помочь мне исправить мой запрос, чтобы получить желаемый результат?

1 Ответ

0 голосов
/ 24 июня 2018

Вы можете использовать whereDoesntHave, чтобы получить все типы, которых нет в таблице автомобилей, где идентификатор владельца равен 1

$owner_id = 1;

CarTypes::whereDoesntHave('cars', function ($query) use ($owner_id) {
    $query->where('owner_id', '=', $owner_id );
})->get();

Запрос отсутствия отношений

Убедитесь, чтоВаша CarTypes модель имеет сопоставления для автомобилей

public function cars(){
    return $this->hasMany('App\Cars', 'type_id');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...