Laravel中destroy()和delete()方法有什么区别?

时间:2014-03-25 08:27:56

标签: php laravel laravel-4 eloquent

我在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);
        }

1 个答案:

答案 0 :(得分:57)

  • 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