Это довольно просто, поскольку это самая простая вещь, но я не знаю, чего я пропущу:
Наличие модели под названием 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:
deleted_at
столбец « deleted_at
».
Установите все неправильные 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