@xnkka

Как правильно организовать запросы к бд c динамическим количеством условий?

Имеется вот такой корявенький(хз как это записать используя релейшены) запрос к бд,
$ads = DB::table('ads')
            ->join('ad_translates','ads.id','=','ad_translates.ad_id')
            ->join('users', 'ads.user_id', '=', 'users.id')
            ->join('cities', 'ads.city_id', '=', 'cities.id')
            ->join('country_translates', 'cities.country_id', '=', 'country_translates.country_id')
            ->join('city_translates', 'ads.city_id', '=', 'city_translates.city_id')
            ->join('category_translates', 'ads.category_id', '=', 'category_translates.category_id')
            ->Where('country_translates.language_id', $lang_id)
            ->Where('city_translates.language_id', $lang_id)
            ->Where('category_translates.language_id', $lang_id)
            ->where('country_translates.country_id',$country_id)
            ->where('cities.id',$city_id)
            ->select('ads.*','ad_translates.name','ad_translates.description','users.name AS username', 'country_translates.country_id AS country_id',
                'country_translates.name AS country', 'city_translates.name AS city', 'category_translates.name AS category')
            ->paginate(3);

В данном запросе условия,
->where('country_translates.country_id',$country_id)
->where('cities.id',$city_id)

могут полностью отсутствовать, или может присутствовать только одно условие c country_id. Получается 3 ситуации когда нет условий, одно условие или два условия. Как это организовать в коде, чтобы было кошерно
  • Вопрос задан
  • 73 просмотра
Решения вопроса 1
@RMate
$arr = [
  ['first_name', '=', 'last_name'],
  ['updated_at', '>', 'created_at']
];
$users = DB::table('users')->whereColumn($arr)->get();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы