может где то глупо сделал, за любой совет буду благодарен )
Я сам не совсем опытный) Но я бы не выносил, функции сами по себе небольшие. Но вот некоторые говорят, что наоборот нужно выносить, т.к обращение к модели идет
Ресурсы не надо передавать во вьюхи. view используется для возврата "html" при отрисовке страницы, а ресурсы - для json при ответе по API. Кроме этого, из того что есть, в принципе, сервис будет излишним
а окей, просто передавать обьект ?
Например: public function index() { $products = Product::query() ->with('category', 'subcategory', 'tags') ->with('preview', fn (Builder $builder) => $builder ->where('type', MediaType::Image) ->limit(1) ) ->latest() ->paginate(20); return view('Pages.Product.index', compact('products')); }
Выносить нужно когда в них более-менее сложная логика начинает прослеживаться. Если в запросе условно 1-5 строк, то нет смысла плодить классы ради классов.
спасибо, понял, а совет выше был про дто, для каждой модели нужно создавать свой обьект ?
Нет, не для каждой. Вообще для моделей не нужно создавать DTO. DTO нужны для передачи данных между слоями приложения особенно когда эти данные являются неочевидными и/или содержат неструктурированные данные. Модели же вполне очевидные и содержат сотруктуру, поэтому для них ДТО является оверхедом.
понял, спасибо 🔥
Особенно когда надо отправить в чужое апи по другому товары к примеру в корзине
Зависит от архитектуры. Если это самое чужое апи предоставляет устанавливаемый пакет внутри которого есть DTO для контроля типизации, то ок. Но если его нужно самому писать на стороне приложения, то это на фиг не надо - просто прокидываем ключи на отправку и всё. Например: Http::post('/some', [ 'user_id' => ..., 'price' => ..., 'items' => [ [...], ], ]);
ну вот в апи альфа банка там у товаров должны быть дополнительные вещи, ну а так да
Дык в реквест и прописывать. Зачем ДТО-то?
из своей бд переформировать товары как для посыла без изменений? ну в принципе тоже логично, согласен, да
В форм реквест через map и всё. В данном случае, на мой взгляд, ДТО будет абсолютно ненужной прослойкой. Как раз тот самый пример когда класс создаётся ради класса.
а почему в форм реквесте?
Буквами промахнулся. Подумал "http клиент отправляет реквест" и написал "форм реквест" на автомате)
ну вот работал с чеками месяц назад, заюзал ДТО потому что там должен быть массив объектов товаров, с другими полями, ну я подумал и просто через map прогнал товары и объекты сделал, но думаю что надо переделать, но пока такое решение сделано у меня, немного говнокодинга :(
Если при передаче конечный объект, скажем так, выносит мозг в плане вложенности элементов, тогда да, ДТО стоит внедрять для повышения прозрачности. А если нет, то не нужен. Как писал выше, всё зависит от архитектуры.
public int $custom_id Тащим дто!)) 😁
Обсуждают сегодня