【问题标题】:Route-model binding not resolving model from id路由模型绑定不从 id 解析模型
【发布时间】:2019-09-24 19:52:34
【问题描述】:

我正在 Laravel 5.7 中构建一个应用程序。我在绑定到用户模型的routes/api.php 文件中设置了一条路由。当我将现有用户 ID 传递到路由中时,它被解析为空白用户模型。

我相信我已经通过在控制器中对用户模型进行类型提示来遵循 laravel 标准。

路由/api.php

Route::prefix('role-permissions')->group(function () {
    Route::get('by-user/{user}', 'RolePermissionsController@getByUserId')->name('api.role-permissions.by-user');
});

app/Http/Controllers/RolePermissionsController.php

public function getByUserId(User $user)
{
    dd($user);
    return $this->getAsResourceCollection($this->repository->getByUserId($user));
}

dd($user); 返回一个空白的User 对象

预期:具有正确 id 的填充用户模型 我可以确认我的表中存在 ID 为 1 的用户

实际:

User {#375
  #fillable: array:3 [
    0 => "name"
    1 => "email"
    2 => "password"
  ]
  #hidden: array:2 [
    0 => "password"
    1 => "remember_token"
  ]
  #connection: null
  #table: null
  #primaryKey: "id"
  #keyType: "int"
  +incrementing: true
  #with: []
  #withCount: []
  #perPage: 15
  +exists: false
  +wasRecentlyCreated: false
  #attributes: []
  #original: []
  #changes: []
  #casts: []
  #dates: []
  #dateFormat: null
  #appends: []
  #dispatchesEvents: []
  #observables: []
  #relations: []
  #touches: []
  +timestamps: true
  #visible: []
  #guarded: array:1 [
    0 => "*"
  ]
  #rememberTokenName: "remember_token"
  #accessToken: null
}

【问题讨论】:

    标签: php laravel routing


    【解决方案1】:

    将“绑定”中间件添加到您的路由中将解决问题:

    Route::prefix('role-permissions')->middleware('bindings')->group(function () {
        Route::get('by-user/{user}', 'RolePermissionsController@getByUserId')->name('api.role-permissions.by-user');
    });
    

    【讨论】:

      【解决方案2】:

      我已经删除了RouteServiceProvider中的mapApiRoutes方法的api中间件路由

      【讨论】:

      • 当时有什么问题?
      【解决方案3】:

      我不认为 $user 应该是对象。是路由传入的参数,所以代码应该是:

      public function getByUserId($user)
      {
          dd($user);
          return $this->getAsResourceCollection($this->repository->getByUserId($user));
      }
      

      【讨论】:

        猜你喜欢
        • 2015-12-08
        • 1970-01-01
        • 2018-02-28
        • 2019-09-05
        • 2019-01-10
        • 2016-06-04
        • 1970-01-01
        • 1970-01-01
        • 2021-05-24
        相关资源
        最近更新 更多