【问题标题】:Change request default database in laravel 5.1laravel 5.1 中的更改请求默认数据库
【发布时间】:2015-10-06 04:24:42
【问题描述】:

我通过这种方式请求验证控制器操作中的请求值:

namespace App\Http\Requests;
use App\Http\Requests\Request;
class AccountsRequest extends Request {

    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize() {
        return TRUE;
    }

    public function rules() {
        return [
            'email' => 'email|required|max:255|unique:accounts',
            'password' => 'min:6|required'
        ];
    }
}

如果我使用默认数据库,一切都很好,但是对于此验证,我需要检查其他数据库中的表。在配置中我有两个数据库:

'connections' => [

    'sqlite' => [
        'driver'   => 'sqlite',
        'database' => database_path('database.sqlite'),
        'prefix'   => '',
    ],

    'mysql' => [
        'driver'    => 'mysql',
        'host'      => env('DB_HOST', 'localhost'),
        'database'  => env('DB_DATABASE', 'sait'),
        'username'  => env('DB_USERNAME', 'root'),
        'password'  => env('DB_PASSWORD', ''),
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ],
    'mysql2' => [
        'driver'    => 'mysql',
        'host'      => env('DB_HOST', 'localhost'),
        'database'  => env('DB_DATABASE', 'account'),
        'username'  => env('DB_USERNAME', 'root'),
        'password'  => env('DB_PASSWORD', ''),
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ],

当我调用验证时,它正在通过我的默认数据库中的“唯一”规则进行检查,因此我需要更改它,但我找不到任何地方如何执行此操作。

【问题讨论】:

    标签: php laravel laravel-5 laravel-5.1


    【解决方案1】:

    根据文档unique - Custom Database Connection 而不是

    'email' => 'email|required|max:255|unique:accounts',

    你需要做的

    'email' => 'email|required|max:255|unique:mysql2.accounts',

    我猜是你没提到的mysql2。

    【讨论】:

      【解决方案2】:

      您是否在文档中看到了“唯一”规则?

      $verifier = App::make('validation.presence');
      
      $verifier->setConnection('connectionName');
      
      $validator = Validator::make($input, [
          'name' => 'required',
          'password' => 'required|min:8',
          'email' => 'required|email|unique:users',
      ]);
      
      $validator->setPresenceVerifier($verifier);
      

      您可以使用 setConnection() 方法来指定您希望如何确定唯一性。

      【讨论】:

        猜你喜欢
        • 2018-12-29
        • 2013-09-29
        • 2016-01-13
        • 2015-04-20
        • 2017-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多