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);
上記は、モデルが保存されたかどうかを確認するための安全な方法ですか?
クエリが結果を返したかどうかを確認
例えば:
$UserProduct = Product::where('seller_id', '=', $userId)->first();
if (! $UserProduct)
{
App::abort(401); //Error
}
製品が見つからない場合、上記はエラーを返しますか?
クエリが実行されたかどうかを確認
例えば:
$newUser = User::create([
'username' => Input::get('username'),
'email' => Input::get('email')
]);
//Check if user was created
if ( ! $newUser)
{
App::abort(500, 'Some Error');
}
//User was created show OK message
return Response::json(array('success' => true, 'user_created' => 1), 200);
上記はユーザーが作成されたかどうかをチェックしますか?
save()
はブール値、保存済み、またはnot savedを返します。そのため、次のいずれかを実行できます。
_$saved = $myModel->save();
if(!$saved){
App::abort(500, 'Error');
}
_
または、ifに直接保存します。
_if(!$myModel->save()){
App::abort(500, 'Error');
}
_
例のようにsave()
を連続して2回呼び出すことは意味がないことに注意してください。ところで、モデルが保存されないようにする多くのエラーや問題は、とにかく例外をスローします...
first()
は、レコードが見つからないときにnull
を返すので、チェックは機能します。ただし、代わりにfirstOrFail()
を使用することもできます。これは、何も見つからないときに自動的にModelNotFoundException
をスローします。
_$UserProduct = Product::where('seller_id', '=', $userId)->firstOrFail();
_
(find()
とfindOrFail()
についても同様です)
残念ながらcreate
を使用するのは簡単ではありません。ソースは次のとおりです。
_public static function create(array $attributes)
{
$model = new static($attributes);
$model->save();
return $model;
}
_
ご覧のとおり、_$attributes
_を使用してモデルの新しいインスタンスを作成し、save()
を呼び出します。ここでsave()
がtrueを返す場合、とにかくモデルインスタンスを取得するので、あなたは知りません。たとえば、モデルIDを確認することができます(レコードが保存され、新しく作成されたIDが返された後にのみ利用できるため)
_if(!$newUser->id){
App::abort(500, 'Some Error');
}
_
public
属性$exists
モデル。
if ($myModel->exists) {
// Model exists in the database
}
_Model::create
_メソッドを使用するときに、そのような移動を行います。
_$activity = Activity::create($data);
if ($activity->exists) {
// success
} else {
// failure
}
_
Saveメソッドに関しては、$model->save()
がBool
を返すため、簡単です。
_$category = new Category();
$category->category_name = $request->category_name;
$is_saved = $category->save();
if ($is_saved) {
// success
} else {
// failure
}
_
/**
* Store a newly created country in storage.
*
* @url /country
* @method POST
* @param Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function store(Request $request)
{
# Filer & only get specific parameters.
$request = $request->only('code', 'name', 'status');
# Assign login user(Auth Control).
$request['created_by'] = Auth::user()->id;
# Insert data into `countries` table.
$country = Country::create($request);
if(!$country)
throw new Exception('Error in saving data.');
}