Eloququent: отношения от отношений - PullRequest
0 голосов
/ 01 февраля 2020

Три таблицы / модели:

Клиенты:

id - client

Бренды:

id - brand

BrandModels :

id - model - brand_id

BrandModelClients:

id - brandmodel_id - client_id

Я хотел бы получить список клиентов по группам на основе бренды самым чистым способом. Прямо сейчас я делаю это грязным способом.

Итак, суть в том, что если у меня есть клиент, у которого есть три разных автомобиля одной марки, то получим только один клиентский элемент.

Ответы [ 2 ]

0 голосов
/ 01 февраля 2020

Исправлено с двумя запросами следующим образом:

// Один для получения всех моделей

$models_list = BrandModel::whereIn('brand_id', $list_fav_brands)->get()->pluck('id','model');

// Второй для получения клиентов

$client_list = BrandModelsClient::whereIn('brands_model_id', $models_list)->with('client')->get()->pluck('client.id','client.name');

0 голосов
/ 01 февраля 2020

Я не получаю правильную структуру вашей базы данных, но вы должны использовать красноречивые отношения, как показано ниже: для более подробной информации eloquent-Relations


Class Brand extends Model{

    public function models(){
        return $this->hasMany('App\BrandModel', 'brand_id');
    }
}


Class BrandModel extends Model{

    public function clients(){
        return $this->hasMany('App\BrandModelClient', 'brandmodel_id');
    }
}

Class BrandModelClient extends Model{

    public function client(){
        return $this->hasOne('App\Client', 'client_id');
    }
}

$brands = Brand::with('models.clients.client')->get();




...