web-dev-qa-db-ja.com

Laravelのdestroy()メソッドとdelete()メソッドの違いは何ですか?

Laravel 4.でマイナーな問題が発生しています。レコードでdelete()メソッドを使用したいのですが、何らかの理由で実際にはレコードが削除されません。 。destroy()はそうですが、私のコードは良好です。また、Teetime::where('date', '=', $formattedDate)->count()をビューに渡すと、正しいものが得られますが、問題は何ですか?

        if($action=="delete") {
            $teetime = Teetime::where('date', '=', $formattedDate)->firstOrFail();
            // for some reason $teetime->delete() doesn't work
            Teetime::destroy($teetime->id);
        }
35
user347284
  • destroyは、(オブジェクトまたはモデルを介して)エンティティを直接削除するための正しい方法です。

例:

$teetime = Teetime::where('date', '=', $formattedDate)->firstOrFail();
$teetime->destroy();
  • deleteはクエリビルダでのみ呼び出すことができます

例:

$teetime = Teetime::where('date', '=', $formattedDate)->delete();

ドキュメントから:

キーによる既存のモデルの削除

User::destroy(1);

User::destroy(array(1, 2, 3));

User::destroy(1, 2, 3);

もちろん、一連のモデルに対して削除クエリを実行することもできます。

$affectedRows = User::where('votes', '>', 100)->delete();

詳細: http://laravel.com/docs/eloquent

57
phoops