前提・実現したいこと
■ Laravel : 5.7
■ PHP : 7.2
実現したいこと:
モデルDateTime型のNULL更新したいのですが、やり方よくわかりません。
発生している問題・エラーメッセージ
formのinputに空に変更で更新する時に、
** 最大の疑問は下記の"試したこと1"で、nullで設定しているのに、何故かjob_startが現在時刻に更新しています。**
該当のソースコード
現在のモデルの内容
PHP
1/?php 2namespace /**省略**/ 3class Job extends Model { 4 5 /** 6 * @var キャスト (toArray、toJson用) 7 */ 8 protected $casts = [ 9 'visit_date' => 'date:Y-m-d', 10 'job_start' => 'datetime:Y-m-d H:i', 11 'job_end' => 'datetime:Y-m-d H:i', 12 ]; 13 14 /** 15 * @var date 時間フォーマット表示 16 */ 17 protected $dates = [ 18 'visit_date', 19 'job_start', 20 'job_end', 21 ]; 22 23 // $fillableに指定したもの以外は入らない(save、update、fill) 24 protected $fillable = [ 25 /**省略**/ 26 'visit_date', 27 'job_start', 28 'job_end', 29 /**省略**/ 30 ]; 31 32 /**他のFUNCTIONは無関係なので省略**/ 33 34 /** 35 * ミューテター 36 * job_start の 設定 37 * @param string $value ($valueのフォーマットは 'Y:m:d H:i') 38 * @return void 39 */ 40 public function setJobStartAttribute($value) { 41 if($value !== null){ 42 //$valueのフォーマットは 'Y:m:d H:i' 43 //Carbon で正常のフォーマットに変更する? 44 $value = (new Carbon($value))->format('Y-m-d H:i:s'); 45 } 46 //null ならそのまま? 47 $this->attributes['job_start'] = $value; 48 } 49 50 /** 51 * ミューテター 52 * job_start の 取得 53 * @param string $value ($valueのフォーマットは 'Y:m:d H:i') 54 * @return void 55 */ 56 public function getJobStartAttribute($value) { 57 return (new Carbon($value))->format('Y-m-d H:i'); 58 } 59 60 61}
Migration
1 2 Schema::create('jobs', function(Blueprint $table) 3 { 4 /**省略**/ 5 $table->dateTime('job_start')->nullable(); 6 $table->dateTime('job_end')->nullable(); 7 });
試したこと
試したこと1
public function edit($id, Request $request){ $job = Job::findOrFail($id); $job->job_start = null; $job->save(); }
試したこと2
public function update($id, Request $request){ $job = Job::findOrFail($id); $job->fill( $request->input() ); $job->save(); }
両方とも何故かjob_startが現在時刻に更新しています。

回答1件
あなたの回答
tips
プレビュー