Laravel по-русски

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

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

#1 22.04.2020 22:19:26

Проблема с реализацией маршрутов с несколькими параметрами

Всем привет!
Перейдем сразу к сути. Я начал изучать Laravel совсем недавно и столкнулся с проблемой, которую не могу пока что решить. Если у кого-то есть идеи, заранее благодарю, надеюсь эта тема поможет многим другим людям.
В общем, я разрабатываю сайт на тему ремонтного сервиса для дипломного проекта. В ходе написания логики для маршрутов сайта, я столкнулся с проблемой, которая не дает мне понять, как все таки правильно использовать структурированные маршруты.
Кратко расскажу как должна быть устроена логика. Есть Категория устройств: смартфоны, планшеты, ноутбуки. У категории есть бренды, а в брендах серии моделей, например: galaxy A,J и тд. При переходе открываются модели из выбранной серии, а при выборе модели открывается прайс-лист услуг.
В чем загвоздка?
Логика маршрута выглядела так

{name_brand}/series

проблема была именно в том, что для пути маршрута в web.php мне нужен был всего один параметр, это имя бренда, а для модели два: имя бренда, категория устройств. Загвоздка в том, что было 2 условия в запросе sql, на что laravel ругался, выдавая ошибку, что упущено 2 аргумента, но задан всего один. С одним условием я знаю как работать, а вот с несколькими в Laravel нет. Вот мой запрос

SELECT DISTINCT 
device_series.id_device_series, device_series.name_series, device_series.img_series, category_device.id_category_device, category_device.name_category, brands.id_brand, brands.name_brand 
from device_series 
INNER JOIN model on device_series.id_device_series=model.id_device_series 
INNER JOIN brands on brands.id_brand=model.id_brand 
INNER JOIN category_device on category_device.id_category_device=brands.id_category_device 
WHERE brands.name_brand 
like $name_brand and category_device.name_category 
like $name_category

Файл web.php

// Категории брендов, серии устройств и их модели
Route::group([
    'prefix' => 'brands'
],  function () {
    // Бренды выбранной категории
    Route::get('{routename}', 'BrandController@brandshow')->name('categorybrand');
    // Выбор серии у бренда
    Route::get('{name_brand}/series/', 'BrandController@seriesshow')->name('seriesbrand');

Контроллер, отвечающий за вывод информации из модели в представление

   public function seriesshow($namebrand){
        return view('series.mainseries')->with([
            "result" => device_series::_sql_all($namebrand)
        ]);
        }

Вот сама ошибка Too few arguments to function App\device_series::_sql_all(), 1 passed and exactly 2 expected.

Честно, говоря не нашел подобные темы в просторах интернета, надеюсь здесь люди помогут.

Не в сети

#2 23.04.2020 15:17:37

Re: Проблема с реализацией маршрутов с несколькими параметрами

Ваш метод _sql_all ожидает две переменные. А вы передаете одну переменную.
Что касается роутов, то там можно передавать сколько угодно параметров. И в методе их получать через запятую.

Изменено barmaley (23.04.2020 15:28:10)

Не в сети

#3 25.04.2020 09:03:20

Re: Проблема с реализацией маршрутов с несколькими параметрами

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

Не в сети

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