What is the difference between destroy() and delete() methods in Laravel?

eloquent, laravel, laravel-4, php

Solution

- `destroy` is correct method for removing an entity directly (via object or model).

Example:

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

- `delete` can only be called in query builder

Example:

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

From documentation:

Deleting An Existing Model By Key

User::destroy(1);

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

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

Of course, you may also run a delete query on a set of models:

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

More info: http://laravel.com/docs/eloquent

Problem

I'm having a minor issue with Laravel 4. I'd like to use the `delete()` method on a record but for some reason it doesn't actually delete the record. `destroy()` does, though, so my code is good. Also, if I pass `Teetime::where('date', '=', $formattedDate)->count()` to my view I get one which is correct. What's the problem? ``` if($action=="delete") { $teetime = Teetime::where('date', '=', $formattedDate)->firstOrFail(); // for some reason $teetime->delete() doesn't work Teetime::destroy($teetime->id); } ```

Original source