169 похожих чатов

Ради хохмы перенёс свой запрос в Query Builder. Было: select

v.*, c.name as carrier_name,
vt.name as vehicle_type_name,
m.background, m.foreground
from
vehicles v
join
carriers c on c.id = v.carrier_id
join
matches_colors m on m.id = v.matches_color_id
join
vehicle_types vt on vt.id = v.vehicle_type_id
where
c.user_id = :user_id
order by c.name, v.id";

Стало

DB::table('vehicles')
->select('vehicles.*', 'carriers.name as carrier_name', 'vehicle_types.name as vehicle_type_name', 'matches_colors.background', 'matches_colors.foreground')
->join('carriers', 'carriers.id', '=', 'vehicles.carrier_id')
->join('matches_colors', 'matches_colors.id', '=', 'vehicles.matches_color_id')
->join('vehicle_types', 'vehicle_types.id', '=', 'vehicles.vehicle_type_id')
->where('carriers.user_id', $user_id)
->orderBy('carriers.name')
->orderBy('vehicles.id')
->get();


Что ужасно не понравилось, кроме того, что запрос стал нечитаемым и пришлось набирать много лишних букв:

1. Невозможно использовать алиасы в построителе запросов. Приходится постоянно писать полное название таблиц.
2. Функция select в связи с этим превращается в адский ад.
3. Всю структуру таблиц надо держать в голове или лезть сверяться с нею куда-либо
4. Все названия функций и полей вбиваются ручками. Подсказки и автозавершение не работают. А это значит, что возможны опечатки.

Вопрос: есть ли способ заставить IDE подсказывать и завершать имена таблиц и столбцов? Иначе совсем тоскливо.

8 ответов

6 просмотров

в DB::table нет

Игорь- Автор вопроса

Как нет, если мой запрос работает и возвращает данные?

ты спросилпро подсказки IDE, я на это ответил. Причем тут работоспособность твоего запроса?

Игорь- Автор вопроса

Тогда я не понял ответа.

Если делать как это подразумевает Eloquent, то будет что-то вроде $vehicles = Vehicle::query() ->where() ->orderBy(...) ->orderBy(...) ->with(['type', 'carrier', 'color']) ->get(); А потом брать модели и по ним идти и забирать $vehicle->type-> $vehicle->carrier->name $vehicle->color->background

Игорь- Автор вопроса

Забирать в представлении? А оно данные уже на клиенте держит, или будет лезть в БД при проходе строк?

Нет, не будет, потому что with().

Я думаю relations использовать нужно. Времени просто сейчас нет растолковать мысль. В доке есть.

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

Обсуждают сегодня

Я тут за тем, чтобы задать вопрос, так как не знаю ассемблер, учу с/с++. Короче, насколько дорога операция перехода в функцию при ее вызове? Дело в том, что в с++ есть макросы...
Максим Рябцев
12
Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
55
А какие чаты вообще в ходу? Auto aim? И что еше
do you think you're better off alone? А
13
hello friends. Do you know how can I learn getx? I have a software project that I should deliver it up to 5 weeks later and I need to learn firebase too. I will be thankfull
AmirHossein Razavi
15
Привет, нужен совет старших товарищей. Есть глобальная переменная var DefaultDataFolder:string; инициализируем DefaultDataFolder:='a:\_OUT\'; есть примитивная процедур...
Max Otto
14
Доброе время суток! у меня тут иноды закончились. и понял почему по сути кстит, я периодически очищаю постгрес и сентри контайнер: postgres=# DELETE FROM nodestore_node WHER...
Юсиф Насиров
9
Какой дос блять?
007
9
Вопрос. Теоретический. Есть список команд. Команды отправляю в обработку некой функции, по очереди. Разные команды могут давать разные результаты после обработки. В зависимос...
Serjone
7
lazarus-3.2.0/gtk, linux патч "имя проекта по умолчанию project1 -> prj" день добрый не нравится "именя проекта по умолчанию" (project1), к.раз приходится переименовывать (н...
livontiy
5
Коллеги, а в чём сейчас хорошо писать на перле, в смысле ide? Пробовал в идее с плагином, подсветка есть, даже какие-то предупреждения есть, но рефакторинга считай нет. Перене...
Дмитрий Петров
9
Карта сайта