在 Eloquent 查询中使用 php 函数
Use php functions in Eloquent query
所以我有一个 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 突变器,但在这种情况下似乎没有帮助。
原来由于某种原因,由于 DebugBar 而出错。猜猜这真的有效!
所以我有一个 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 突变器,但在这种情况下似乎没有帮助。
原来由于某种原因,由于 DebugBar 而出错。猜猜这真的有效!