Laravel модель Trailing Data при сохранении модели

У меня есть такой код

    $editStuState = StuAtt::where('studentId' , '=' , $id)->first();
$editStuState -> leave +=1;
$editStuState -> present = $editStuState -> present-1;
$editStuState->update();
//OR
$editStuState->save();
return 'this is good';

Я не могу сохранить или обновить свои данные,
когда я удаляю «Обновить» и «Сохранить связанную строку», он может печатать текст

это dd($editStuState) данные

StuAtt {#382 ▼
#table: "stu_attendance"#connection: "mysql"#primaryKey: "id"#keyType: "int"+incrementing: true
#with: []
#withCount: []
#perPage: 15
+exists: true
+wasRecentlyCreated: false
#attributes: array:7 [▼
"id" => "7""studentId" => "1""present" => "2""absent" => "1""leave" => "10""created_at" => "2018-04-16 11:17:41.176898""updated_at" => "2018-04-16 06:47:41.000000"]
#original: array:7 [▼
"id" => "7""studentId" => "1""present" => "2""absent" => "1""leave" => "10""created_at" => "2018-04-16 11:17:41.176898""updated_at" => "2018-04-16 06:47:41.000000"]
#changes: []
#casts: []
#dates: []
#dateFormat: null
#appends: []
#dispatchesEvents: []
#observables: []
#relations: []
#touches: []
+timestamps: true
#hidden: []
#visible: []
#fillable: []
#guarded: array:1 [▶]
}

Я также получил эту форму ошибки Laravel 5.6 это

InvalidArgumentException
Trailing data

Я проверяю свой код построчно, и я думаю, что он не имеет отношения к Carbon согласно моим исследованиям.
Как мне это исправить?

4

Решение

Конечные данные являются ошибкой Carbon, потому что вы, вероятно, используете Postgres, а ваша дата возвращает миллисекунды.

"created_at" => "2018-04-19 07:01:19.929554"

Вы можете добавить следующий метод к вашей (базовой) модели.

public function getDateFormat()
{
return 'Y-m-d H:i:s.u';
}
5

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

Измените свой код с:

$editStuState = StuAtt::where('studentId' , '=' , $id)->first();
$editStuState -> leave +=1;
$editStuState -> present = $editStuState -> present-1;
$editStuState->update();
//OR
$editStuState->save();
return 'this is good';

Для того, чтобы:

$editStuState = StuAtt::where('studentId' , '=' , $id)->first();
$editStuState -> leave +=1;
$editStuState -> present = $editStuState -> present-1;
$editStuState->save();
return 'this is good';

метод -> Обновление (…) используется для массовых обновлений, проверьте Массовые обновления

0

Если ваша база данных — Postgres, а поле — метка времени, иногда Carbon не может конвертировать в формат по умолчанию (без миллисекунд).

Если миллисекунды не нужны, обновите содержимое поля, чтобы оно не содержало миллисекундную часть.

UPDATE YOURTABLE SET created_at = date_trunc('seconds', created_at),
updated_at = date_trunc('seconds', updated_at)

Это нормализует поля с метками времени без миллисекунд.

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