Избегайте неоднозначности столбцов при объединении, установив таблицу по умолчанию с помощью построителя запросов laravel - PullRequest
1 голос
/ 05 апреля 2019

Я хочу заказать запрос (из таблицы revenues) по столбцу отношения ('orders.number').Один заказ имеет много доходов.Проблема заключается в том, что и выручка, и заказы имеют общий столбец (description), что приводит к неоднозначности при фильтрации по where().Я знаю, что могу указать таблицы при фильтрации, но проблема здесь в том, что я использую глобальную область, которая упорядочивает запрос по заданным столбцам в файле конфигурации, и description является одной из них.Ранее я не мог знать имя таблицы, и отправка его в качестве параметра в функцию для меня кажется излишним.

$revenues = App\Revenue::
    with('order.client', 'order.place')
    ->sessionSearch('revenues')
    ->orderBy('created_at', 'desc')
    ->join('orders', 'orders.id', '=', 'revenues.order_id')
    ->select('revenues.*', 'orders.number as order_number')
    ->orderBy('order_number', 'desc')
    ->paginate(perPage());

Я попытался динамически добавить имя таблицы в методе sessionSearch(), но яне смог получить к нему доступ через переданный экземпляр Builder, потому что он был защищен.

Я также подумал, что при выполнении leftJoin mysql узнает, какая у меня главная таблица, и предположительно нацелится на ее столбцы, но неоднозначностьвсе еще проблема.

Есть ли способ, которым я могу установить подходящую таблицу по умолчанию в моих настройках sql, чтобы не возникала двусмысленность?В основном мне нужен только номер из таблицы заказов, но ошибка неоднозначности все еще выдается.

Заранее спасибо за любую помощь!

...