web-dev-qa-db-ja.com

laravelモデルが保存されたか、クエリが実行されたかどうかを確認します

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);

上記はユーザーが作成されたかどうかをチェックしますか?

26
user2722667

モデルが保存されたかどうかを確認します

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');
}
_
48
lukasgeiter

public属性$existsモデル。

if ($myModel->exists) {
    // Model exists in the database
}
8
Simon

_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 
}
_
5
Asem Khatib
/**
 * 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.');
}
0
Shanka SMS