Laravel where и orWhere не работает

189
30 сентября 2021, 01:50

Мой запрос выглядит так

select * from `user_profile_details` where (`user_id` = 2 and `address_type` = 'billing') or (`user_id` = 2 and `address_type` = 'residence')

и результат этого запроса всегда возвращает последное условие

вот сам код

$checkoutUserDetails = UserProfileDetail::where([
          ['user_id', $user->id],
          ['address_type', 'billing']
        ])->orWhere([
          ['user_id', $user->id],
          ['address_type', 'residence']
        ])->get();
        $checkoutUserDetails['order_data'] = $orderData;
Answer 1
$checkoutUserDetails = UserProfileDetail::where('user_id', $user->id)
    ->where(function($query){
        $query->where('address_type', 'billing')
              ->orWhere('address_type', 'residence');
    })
->get();

Данный запрос будет выглядеть так:

select * from `user_profile_details` where `user_id` = 2 and (`address_type` = 'billing' or `address_type` = 'residence')

Если вам нужно прям как в вопросе, то делайте так:

$checkoutUserDetails = UserProfileDetail::where(function($query) use ($user){
    $query->where('user_id', $user->id)
          ->where('address_type', 'billing');
})->orWhere(function($query) use ($user){
    $query->where('user_id', $user->id)
          ->where('address_type', 'residence');
})
->get();
Answer 2

На mysql можно так. COALESCE возьмет первое не null значение

SELECT user_id, COALESCE(b,r) 
   FROM (
     (select user_id, val b, null r 
        from your_table 
        where user_id = 2 and address_type = 'billing')
     union 
     (select user_id, null b, val r 
         from your_table 
         where user_id =2 and address_type='residence')) t
READ ALSO
Почему не удается восстановить базу данных из файла резервной копии?

Почему не удается восстановить базу данных из файла резервной копии?

Создал файл резервной копии mydb1 с помощью команды mysqldump:

95
Сетка bootstrap в Wordpress съезжает

Сетка bootstrap в Wordpress съезжает

Вот код страницы вывода новости, но почему-то в сетке съезжает блоки

329
Непонятные сбои в консольной программе [закрыт]

Непонятные сбои в консольной программе [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

281