Laravel 集体 - 非 eloquent table 名称的模型绑定问题

Laravel Collective - Model binding issue for non eloquent table names

我有一个用户模型有一个名为admin_users的table,这已经在模型中规定了(protected $table = 'admin_users'; )

我正在使用Laravel集体形式如下:

{!! Form::model($user, ['route' => ['users.update', $user->id], 'method' => 'put']) !!}

我的验证如下:

  $rules = array(
        'first_name'    => 'required',
        'last_name'     => 'required',
        'email'         => 'email|max:255|unique:users',
        'country_id'    => 'required|numeric',
        'user_status'   => 'required'
    );

我使用 Laravel Collective FORM::model 的唯一原因是为了在验证失败时轻松取回请求输入:

(return redirect()->back()->withErrors($validator)->withInput($request->all())

虽然我得到了验证成功:

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'crm.users' doesn't exist (SQL: select count(*) as aggregate from `users` where `email` = jocelyn33@example.com) 奇怪的是它没有从用户 class table.

中获取 table

我的问题是是否有办法让 FORM::model 获得 admin_users table 名称而不是 users 如果我决定放弃 FORM::model 并使用 FORM::open,我是否仍然能够取回验证失败的请求输入?

您的验证规则正在定义 table 用于唯一检查的内容:

'email'         => 'email|max:255|unique:users',

unique:users 告诉唯一规则使用 users table.

unique:table,column,except,idColumn - Laravel Docs 5.6 - Validation - Unique Rule