Laravel 5.3 - Вызов неопределенного метода Illuminate \ Database \ Query \ Builder :: withTrashed ()

Версия Laravel, которую я использую, - 5.3. И я уже использую трейт SoftDeletes, и он тоже был импортирован правильно.

namespace App\Models; 

use Illuminate\Database\Eloquent\SoftDeletes;

class Reference extends Model {

  use SoftDeletes;

  protected $fillable = [
    'client_id',
    'email'
  ];
}

Когда я использую методы onlyTrashed () или withTrashed (), я получаю сообщение об ошибке.

$reference = Reference::withTrashed()->get();

or

$reference = Reference::onlyTrashed()->get();

Ошибка:

BadMethodCallException in Builder.php line 2450: 
Call to undefined method Illuminate\Database\Query\Builder::withTrashed()

Некоторые из таких методов работают:

Reference::find(1)->delete();
Reference::find(1)->restore();
Reference::find(1)->trashed();

В чем может быть проблема?


person leoalmar    schedule 09.03.2018    source источник


Ответы (1)


Это происходит, когда в вашей таблице нет столбца deleted_at. Вы создали справочную таблицу со столбцом при миграции, как показано ниже?

$table->softDeletes();

Даже если вы добавили Eloquent \ Softdeletes в свою модель, она все равно выйдет из строя с сообщением об ошибке, которое вы получили, если в фактической таблице нет этого столбца.

person skribe    schedule 09.03.2018
comment
Я создал миграцию с помощью $ table- ›softDeletes (). Остальные методы работают. Метод delete () обновляет столбец deleted_at до отметки времени. Это странно. - person leoalmar; 09.03.2018
comment
И когда я запускаю Reference :: all (), возвращает все строки, пока строка не будет удалена (с меткой времени в deleted_at); - person leoalmar; 09.03.2018