Контроллер Laravel для CRUD без запросов к базе данных внутри методов контроллера - PullRequest
0 голосов
/ 11 октября 2018

Можно передать нужный объект модели внутри методов CRUD без запроса к базе данных внутри самого метода?

Если вы посмотрите на DOC, вы увидите, что методы контроллера принимают идентификатор из URL какparam.

https://laravel.com/docs/5.7/controllers

Но, если вы генерируете контроллер с помощью кустарного интерфейса пользователя, методы принимают в качестве параметра не идентификаторы, а объекты запроса и / или объект модели, например Post $ post.Итак, как я могу быть уверен, что Laravel правильно запросит у меня БД и передаст модель в качестве параметра?Если я пытаюсь это сделать, представление корректно отображается, но данные не передаются в ответ.

Пример метода из DOCS

 /**
 * Show the profile for the given user.
 *
 * @param  int  $id
 * @return Response
 */
public function show($id)
{
    return view('user.profile', ['user' => User::findOrFail($id)]);
}

Пример метода из сгенерированного CLI контроллера

    /**
 * Display the specified resource.
 *
 * @param  \App\Order  $order
 * @return \Illuminate\Http\Response
 */
public function show(Order $order)
{
    //
}

Обратите внимание на разницу в параметрах.

Runned ArtisanКоманда

php artisan make: модель Заказать -mcr Ссылка: https://quickadminpanel.com/blog/list-of-16-artisan-make-commands-with-parameters/

Решение

Вы посмотрите на https://laravel.com/docs/master/routing#route-model-binding, Явное связывание и определите модельв маршрутизаторе в загрузке AppServiceProvider следующим образом:

/**
 * Bootstrap any application services.
 *
 * @return void
 */
public function boot()
{
    Route::model('ordini', \App\Order::class);
}

1 Ответ

0 голосов
/ 12 октября 2018

Я думаю, что вы ищете привязку модели маршрута https://laravel.com/docs/master/routing#route-model-binding

Если у вас есть маршрут типа user/{user}, вы можете разрешить модель пользователя с помощью подсказки типа

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class UserController extends Controller
{
    /**
     * Store a new user.
     *
     * @param  \App\User  $user
     * @return Response
     */
    public function store(\App\User $user)
    {
        $name = $user->name;

        //
    }
}
...