Laravel Eloquent :: Find () возвращает NULL с существующим идентификатором

Это довольно просто, поскольку это самая простая вещь, но я не знаю, чего я пропущу:

Наличие модели под названием Site

Я использую Eloquent ORM, поэтому, когда я звоню (в контроллере)

 $oSite = Site::find(1) 

а потом

 var_dump($oSite); 

Он возвращает значение NULL .

Но когда я проверяю базу данных, на «сайтах» таблицы фактически содержится следующий элемент:

 id: 1 user_id: 1 name: test 

В моей модели Site меня есть следующий код:

 use Illuminate\Database\Eloquent\ModelNotFoundException; Class Site extends Eloquent { protected $table = 'sites'; protected $fillable = array ('user_id', 'name'); } 

Вместо этого, если я собираю элемент со следующим:

 $oSite = DB::table('sites') ->where('id', 1) ->first(); 

Он работает, и я получаю правильный регистр.

Что я делаю неправильно? Какую часть документации я не получил?

РЕДАКТИРОВАТЬ:

Код модели можно проверить выше.

Контроллер :

 use Illuminate\Support\Facades\Redirect; class SiteManagementController extends BaseController { ... public function deleteSite() { if (Request::ajax()) { $iSiteToDelete = Input::get('siteId'); $oSite = Site::find($iSiteToDelete); return var_dump($oSite); } else { return false; } } } 

РЕДАКТИРОВАТЬ 2: (РЕШАЕТ)

Настоящая причина, почему не работает:

Я изначально в своем коде модели:

 use Illuminate\Database\Eloquent\SoftDeletingTrait; use Illuminate\Database\Eloquent\ModelNotFoundException; Class Site extends Eloquent { protected $table = 'sites'; use SoftDeletingTrait; protected $dates = ['deleted_at']; protected $fillable = array('user_id', 'name'); } 

Проблема заключалась в deleted_at что после запуска проекта я добавил deleted_at « deleted_at », и когда я применил миграцию, у меня не было softdeleting. Очевидно, что я сделал вторую ошибку, забыв включить « deleted_at » для того, чтобы быть нулевым, следовательно, у всех deleted_at была неправильная метка времени (0000-00-00 …).

Fix:

  1. deleted_at столбец « deleted_at ».

  2. Установите все неправильные deleted_at « deleted_at » в NULL .

проверьте, что вы получаете Input :: get ('siteId'); правильно, если вы получаете его, попробуйте преобразовать его в целое число, то есть $ iSiteToDelete = intval (Input :: get ('siteId'));

Вы не возвращаете свою модель.

var_dump выводит вывод и ничего не возвращает.

сделайте это вместо этого:

 dd($oSite); // stands for var_dump and die - a helper method 

и даже лучше, просто верните модель:

 return $oSite; // will be cast to JSON string