我知道使用:
User::firstOrCreate(array('name' => $input['name'], 'email' => $input['email'], 'password' => $input['password']));
Run Code Online (Sandbox Code Playgroud)
检查用户是否先存在,如果不存在则创建它,但是如何检查?它是否检查所提供的所有参数或是否有指定特定参数的方法,例如,我可以检查电子邮件地址是否存在,而不是名称 - 因为两个用户可能具有相同的名称,但他们的电子邮件地址需要是独特.
我正在使用Laravel的功能firstOrNew()来创建新用户或查找和更新现有用户.
在创建对象之后,如果它之前存在或者它是新对象,我怎么知道?
这个想法是这样的:
$user = \App\User::firstOrNew([
'email' => $userData->getEmail(),
'name' => $userData->getName(),
]);
if ($user->new) { // some way to check
// user was created now
} else {
//user already existed
}
Run Code Online (Sandbox Code Playgroud) 我见过很多人用这种方式来检查一个laravel模型是否得到了保存.所以现在我想知道这是否安全.
我也可以检查下面的查询是否像这样执行了
检查模型是否已保存
例如:
$myModel = new User();
$myModel->firstname = Input::get('firstname');
$myModel->lastname = Input::get('lastname');
$myModel->save();
//Check if user got saved
if ( ! $myModel->save())
{
App::abort(500, 'Error');
}
//User got saved show OK message
return Response::json(array('success' => true, 'user_added' => 1), 200);
Run Code Online (Sandbox Code Playgroud)
以上是一种安全的方式来检查我的模型何时保存?
检查查询是否返回结果
例如:
$UserProduct = Product::where('seller_id', '=', $userId)->first();
if (! $UserProduct)
{
App::abort(401); //Error
}
Run Code Online (Sandbox Code Playgroud)
如果找不到产品,上面是否会返回错误?
检查查询是否已执行
例如:
$newUser = User::create([
'username' => Input::get('username'),
'email' => Input::get('email')
]);
//Check if user was created
if ( ! $newUser)
{ …Run Code Online (Sandbox Code Playgroud)