Как сделать where-фильтр в «С» (ManyToMany Laravel)? - PullRequest
0 голосов
/ 29 декабря 2018

Отношения ManyToMany.Я пытаюсь сделать запрос:

$products=Product::with(['lists' => function($query)
                {
           $query->where('user_id', Auth::id());
                }])
                ->orderBy('id', 'desc')
                ->paginate(20);

Но я получаю сообщение об ошибке.

"SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'user_id' in where clause is ambiguous (SQL: select `mainlists`.*, `list_products`.`product_id` as `pivot_product_id`, `list_products`.`list_id` as `pivot_list_id` from `mainlists` inner join `list_products` on `mainlists`.`id` = `list_products`.`list_id` where `user_id` = 16 and `list_products`.`product_id` in (73, 80, 81, 87, 88, 89)

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

1 Ответ

0 голосов
/ 03 января 2019

потому что ваши product и list оба имеют user_id, вам следует выбрать user_id, который вы хотите считать

следующим образом:

$products=Product::with(['lists' => function($query)
            {
       $query->where('list_products.user_id', Auth::id());
            }])
            ->orderBy('id', 'desc')
            ->paginate(20);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...