在Eloquent查询中使用php函数

时间:2016-09-04 00:13:19

标签: php laravel eloquent md5 sqlsrv

所以我有一个GameAcc模型,其中包含以下值:

protected $fillable = [
        'AccountName', 'AccountLevelCode', 'SecondAuthFailCount', 'SecondAuthCode', 'SecondAuthLockFlag', 'CharacterCreateLimit', 'CharacterMaxCount', 'RegisterDate', 'PublisherCode', 'NxLoginPwd',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password',
    ];

当有人在我的网站上注册时,GameAcc :: create查询将与常规User :: create一起执行。它看起来像这样:

// Create the user
    $user = User::create([
        'name' => $request->input('name'),
        'email' => $request->input('email'),
        'password' => bcrypt($request->input('password'))
    ]);

    // Create the game account
    GameAcc::create([
      'AccountName' => $request->input('name'),
      'AccountLevelCode' => 0,
      'SecondAuthFailCount' => 0,
      'SecondAuthCode' => 1,
      'SecondAuthLockFlag' => 'false',
      'CharacterCreateLimit' => 10,
      'CharacterMaxCount' => 8,
      'RegisterDate' => Carbon::now(),
      'PublisherCode' => 0,
      'NxLoginPwd' => $request->input('password')
    ]);

现在,GameAcc进入sqlsrv数据库,而用户信息进入常规mysql数据库。如您所见,NxLoginPwd未使用bcrypt,因为从sqlsrv读取的程序需要使用MD5对密码进行哈希处理,因此bcrypt是不行的。

理想情况下我需要它做的事情是:

GameAcc::create([
  'AccountName' => $request->input('name'),
  'AccountLevelCode' => 0,
  'SecondAuthFailCount' => 0,
  'SecondAuthCode' => 1,
  'SecondAuthLockFlag' => 'false',
  'CharacterCreateLimit' => 10,
  'CharacterMaxCount' => 8,
  'RegisterDate' => Carbon::now(),
  'PublisherCode' => 0,
  'NxLoginPwd' => strtoupper(md5($request->input('password')))
]);

但我知道这不起作用。那么我有什么选择继续使用bcrypt和User :: create但是使用md5和GameAcc :: create?

我看过Eloquent mutators,但在这种情况下似乎不会有帮助。

1 个答案:

答案 0 :(得分:0)

由于某些原因,原因是DebugBar错误输出。猜猜这确实有效!