В чем разница между методами destroy() и delete() в Laravel?


У меня небольшая проблема с 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);
        }
Author: Rishabh, 2014-03-25

1 answers

  • 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

 51
Author: phoops, 2014-03-25 08:29:35