Как я могу использовать построитель запросов в Laravel - PullRequest
0 голосов
/ 30 октября 2018

У меня есть 4 модели, подобные этой

Модель торговца

class Merchant extends Model {
    public function city() {
       return $this->belongsTo('App\Model\Loc\City');
    }
}

Модель города

class City extends Model {
    public function province() {
       return $this->belongsTo('App\Model\Loc\Province');
    }
    public function merchant() {
       return $this->hasMany('App\Model\Merchant');
    }
}

Провинция Модель

class Province extends Model {
    public function country() {
       return $this->belongsTo('App\Model\Loc\Country');
    }
    public function city() {
       return $this->hasMany('App\Model\Loc\City');
    }
}

А Модель страны

class Merchant extends Model {
    public function province() {
       return $this->hasMany('App\Model\Loc\Province');
    }
}

Я хочу показать продавца по идентификатору страны, как я могу это сделать? у меня есть простой запрос, как это, как реализовать в построителе запросов laravel

SELECT mer.* FROM
merchants AS mer,
city AS city,
province AS prov,
country AS country WHERE
mer.id_city = city.id_city
AND city.id_prov = prov.id_prov 
AND prov.id_country = country.id_country
AND country.id_country = 1

Спасибо

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Это хорошо выглядит. я полагаю, что в стране есть id = 1

$merchants = Merchant::whereHas('city', function ($city) {
    $city->whereHas('province', function ($province) {
        $province->where('id_country', '=', 1);
    });
})->get();
0 голосов
/ 30 октября 2018

Вы можете попробовать это или изменить его в соответствии со своими потребностями, я надеюсь, что он даст вам путь:

DB::table('merchants as mer')
    ->select(['mer.*', 'city.*', 'prov.*', 'country.*'])
    ->join('city', 'city.id_city', '=', 'mer.id_city')
    ->join('province as prov', 'prov.id_prov', '=', 'city.id_prov')
    ->join('country as c', 'c.id_country', '=', 'prov.id_country')
    ->where('c.id', 1)
    ->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...