Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 07.11.2017 02:42:18

Как сделать выборка с условием и исключением!

Версия Laravel:  5.4
Версия PHP: 7.1
Операционная система и её версия: Windows 10 Pro

Здравствуйте, подскажите пожалуйста как сделать выборку пользователей с таблицы users:

------------------
| id  | name     |
------------------
|  1  | Алексей  |
|  2  | Владимир |
|  3  | Светлана |
|  4  | Сергей   |
------------------

где в связанной таблице buy_product должно выполнятся условие (product_id <> 5)

------------------------------
| id  | user_id | product_id |
------------------------------
|  1  |    1    |     2      |
|  2  |    1    |     5      |
|  3  |    1    |     18     |
|  4  |    2    |     4      |
|  5  |    2    |     12     |
|  6  |    3    |     7      |
|  7  |    3    |     5      |
|  8  |    3    |     16     |
|  9  |    4    |     7      |
|  10 |    3    |     8      |
|  11 |    4    |     25     |
------------------------------

то есть на выходе должно получится:

------------------
| id  | name     |
------------------
|  2  | Владимир |
|  4  | Сергей   |
------------------

Связь таблиц один ко многим.

Изменено Alex82 (07.11.2017 02:46:42)

Не в сети

#2 07.11.2017 06:59:07

TrueKanonir
Откуда: Ташкент
Сообщений: 221

Re: Как сделать выборка с условием и исключением!

PHP
$users->whereHas('buyProduct', function($q){
  
$q->where('product_id''<>'5);
})->
get();

Немогу в данное время проверить, но по идеи должно сработать
Или еще whereNotIn можно попробовать.

Не в сети

#3 07.11.2017 13:43:33

Re: Как сделать выборка с условием и исключением!

PHP
$users->whereHas('buyProduct', function($q){
  
$q->where('product_id''<>'5);
})->
get();

Немогу в данное время проверить, но по идеи должно сработать
Или еще whereNotIn можно попробовать.

Не помогло, все равно возвращает все записи пользователей. :(
Пробовал PHPwhereNotIn('product_id', [5227]), тоже ничего!
Пробую сгруппировать по user.id но вот как сделать условие в группе?! :( :/

Изменено Alex82 (07.11.2017 13:53:55)

Не в сети

#4 07.11.2017 15:38:18

Re: Как сделать выборка с условием и исключением!

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

User::whereDoesntHave('buyProducts', function ($q) use($productId) {
        $q->where('product_id', $productId);
    })
    ->get()

Не в сети

#5 07.11.2017 18:07:51

Re: Как сделать выборка с условием и исключением!

Спасибо большое! Все получилось  big_smile big_smile big_smile

Не в сети

Подвал раздела