Laravel по-русски

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

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

#1 16.01.2023 13:26:36

Majestio
Откуда: Минск
Сообщений: 23
Сайт

Отношения моделей вместо построителя запросов

Здравствуйте!

Пытаюсь вот осваивать Laravel 8. Появился вопрос, может быть поможете ... Я написал работающий код:

$id = Auth::User()->id;
$orderCount = DB::table('orders')
                  ->join('order_products', 'order.id', '=', 'order_products.order_id')
                  ->where('status', '=', 0)
                  ->where('user_id', '=', $id)
                  ->count();

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

Не в сети

#2 29.01.2023 14:06:59

Re: Отношения моделей вместо построителя запросов

Через отношения или чтобы имена не светились? Это разные задачи.

Если буквально хочешь использовать отношения, то смотри в доках методы with, withCount. Это не равноценно join, т.е. будет другой запрос, но цель возможно будет достигнута.

Если надо взять имя таблицы из определения класса-модели, то сам Тейлор совтует делать так: with(new Model)->getTable();


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

#3 29.01.2023 15:23:29

Majestio
Откуда: Минск
Сообщений: 23
Сайт

Re: Отношения моделей вместо построителя запросов

Через отношения или чтобы имена не светились? Это разные задачи.

Ну да. Но, как я понял, "из коробки" это невозможно. Видимо не я один задавался этим вопросом. Вот нашел внешний проект, который похоже делает это. Увы, немного поздновато мне, но на будущее - запомнил.

Не в сети

#4 29.01.2023 15:32:35

Majestio
Откуда: Минск
Сообщений: 23
Сайт

Re: Отношения моделей вместо построителя запросов

Если надо взять имя таблицы из определения класса-модели, то сам Тейлор совтует делать так: with(new Model)->getTable();

Норм!

Не в сети

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