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‘быть обнуляемым, следовательно, все вставленные файлы имели неправильную метку времени (0000-00-00 …).

Fix:

  1. Сделано обнуляемымdeleted_atколонка.

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

9

Решение

Ты не вернешь свою модель.

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

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

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

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

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

Другие решения

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

$iSiteToDelete = intval(Input::get('siteId'));
1

По вопросам рекламы [email protected]