@alex--n

Почему Laravel выдает ошибку при присвоении?

Добрый вечер. В ларавеле не новичок, после долгого пользования 5.2 решил попробовать 5.3. Решил сделать простое приложение. Создал миграцию
Schema::create('news', function (Blueprint $table) {
            $table->increments('id');
            $table->string('content');
            $table->timestamps();
        });

Описал модель
class News extends Model
{
    protected $primaryKey = ['id'];
    protected $fillable = [
        'content', 'created_at', 'updated_at',
    ];
}

И при попытке присвоить вот так:
$news = new News();
$news->content = $request->input('content');

Или даже так
$news = new News();
$news->content = "test";

Получаю
Illegal offset type
at Model->getCasts() in Model.php line 2764
at Model->hasCast('content', array('date', 'datetime')) in Model.php line 2795
at Model->isDateCastable('content') in Model.php line 2884
at Model->setAttribute('content', 'test') in Model.php line 3478
at Model->__set('content', 'test') in AdminController.php line 29

В базе данных это строка, как и везде. Но, как мне кажется, по непонятным причинам он его принимает за datetime. В общем, что не так?
  • Вопрос задан
  • 327 просмотров
Решения вопроса 1
@alex--n Автор вопроса
Проблема решена.
protected $primaryKey = 'id';
а не
protected $primaryKey = ['id'];
Заметил не сразу)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Sanasol
@Sanasol Куратор тега Laravel
нельзя просто так взять и загуглить ошибку
решил попробовать 5.3

уже 5,4 давно

Ну попробуйте свои касты прописать
https://laravel.com/docs/5.4/eloquent-mutators#att...

Где-то что-то не так сделали, раз он за дату принимает поле
Ответ написан
MasterRO
@MasterRO
Middle Laravel Developer
Кстати created_at и updated_at в fillable можно не прописывать. А ошибка явно где-то в коде, но из того, что представлено ее не видно
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы