Laravel по-русски

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

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

#1 Re: Laravel 6/7/8/9/10 » Пустой GET-запрос в Laravel » 25.04.2020 22:49:06

Ребят, решил просмотреть запрос через toSql() и в итоге получил пустоту вместо значений из параметров )))

"select `device_series`.`id_device_series`, `device_series`.`name_series`, `device_series`.`img_series`, `category_device`.`id_category_device`, `category_device`.`name_category`, `category_device`.`routename`, `brands`.`id_brand`, `brands`.`name_brand` from `device_series` inner join `model` on `model`.`id_device_series` = `device_series`.`id_device_series` inner join `brands` on `model`.`id_brand` = `brands`.`id_brand` inner join `category_device` on `brands`.`id_category_device` = `category_device`.`id_category_device` where (`brands`.`name_brand` = ? and `category_device`.`routename` = ?)

Если я применю метод getBinding, то получу 2 значения из двух параметров.

#2 Laravel 6/7/8/9/10 » Пустой GET-запрос в Laravel » 25.04.2020 15:26:22

STILMAN
Ответов: 1

Всем привет.
Есть запрос, в котором присутствуют несколько условий, в которых есть параметры и в них есть значение. Проблема в том, что значения хоть и передаются в сам запрос(дебажил), то он вообще выводит пустоту. Я не понимаю с чем это связано, хотя если вписать в запрос вручную данные, то он выводит информацию из бд.
Сам запрос

 static public function _sql_all($namebrand,$routename)
    {
    
    $series = DB::table('device_series')->join('model', 'model.id_device_series', '=', 'device_series.id_device_series')
    ->join('brands', 'model.id_brand', '=', 'brands.id_brand')
    ->join('category_device', 'brands.id_category_device', '=', 'category_device.id_category_device')
    ->select('device_series.id_device_series', 'device_series.name_series', 'device_series.img_series', 'category_device.id_category_device', 'category_device.name_category', 'category_device.routename', 'brands.id_brand', 'brands.name_brand')
    ->where([['brands.name_brand','=',"{$namebrand}"],['category_device.routename','=',"{$routename}"]])
    ->get();

    return $series;
    }

Вот контроллер

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

Вот маршрут

Route::get('category/{routename}/brand/{namebrand}/series', 'SeriesController@seriesshow')->name('seriesbrand');

#3 Re: Laravel 6/7/8/9/10 » Проблема с реализацией маршрутов с несколькими параметрами » 25.04.2020 09:03:20

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

#4 Laravel 6/7/8/9/10 » Проблема с реализацией маршрутов с несколькими параметрами » 22.04.2020 22:19:26

STILMAN
Ответов: 2

Всем привет!
Перейдем сразу к сути. Я начал изучать 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.

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

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