私はこのようなコードを持っています
_ $editStuState = StuAtt::where('studentId' , '=' , $id)->first();
$editStuState -> leave +=1;
$editStuState -> present = $editStuState -> present-1;
$editStuState->update();
//OR
$editStuState->save();
return 'this is good';
_
データを保存または更新できません。UpdateおよびSave関連行を削除すると、テキストを印刷できます。
これは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 it
_InvalidArgumentException
Trailing data
_
後続データはCarbonエラーです。これは、おそらくPostgresを使用していて、日付がミリ秒を返すためです。
"created_at" => "2018-04-19 07:01:19.929554"
(ベース)モデルに次のメソッドを追加できます。
public function getDateFormat()
{
return 'Y-m-d H:i:s.u';
}
PostgresでTIME WITH TIMEZONEを使用している場合、形式は次のようになります。
Y-m-d H:i:s.uO
Postgresを使用している場合は、モデルにいくつかの行を追加する必要があります。 PostgresのTIME WITH TIMEZONEが原因で発生します。
Laravelはすでにこのベークインをサポートしているので、Date Mutators
も読んでください。モデルのデフォルトのdateFormatをオーバーライドするには、モデルの行の下に単に入力してください: https:/ /laravel.com/docs/5.7/eloquent-mutators#date-mutators
アプリ/モデル(app
フォルダー、exp。User、SomeModel)に移動し、次の行を追加します。
protected $dateFormat = 'Y-m-d H:i:sO';
ベスト
次のコードからコードを変更します。
$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';
メソッド-> update(...)は大量更新に使用されます 大量更新 を確認してください
データベースがPostgresでフィールドがタイムスタンプの場合、Carbonはデフォルトの形式(ミリ秒なし)に変換できないことがあります。
ミリ秒が不要な場合は、フィールドの内容を更新してミリ秒部分を含めないようにします。
UPDATE YOURTABLE SET created_at = date_trunc('seconds', created_at),
updated_at = date_trunc('seconds', updated_at)
これにより、ミリ秒なしでタイムスタンプ付きフィールドが正規化されます。
同じ問題がありますが、列名をcreation_date
に変更しました。問題は解決しました。