2017-05-25 14 views
0
<?php 

namespace App; 

use Carbon\Carbon; 
use Illuminate\Database\Eloquent\Model; 

class UserInformation extends Model { 

    /** 
    * The table associated with the model. 
    * 
    * @var string 
    */ 
    protected $table = "user_information"; 

    /** 
    * The attributes that are mass assignable. 
    * 
    * @var array 
    */ 
    protected $fillable = [ 
     'title', 
     'first_name', 
     'last_name', 
     'img_path', 
     'born', 
     'gender', 
     'address', 
     'country_id', 
     'about', 
     'institution', 
     'area_of_expertise', 
     'cv_path', 
     'facebook', 
     'twitter', 
     'instagram', 
     'linkedin', 
     'university', 
     'university_graduated_at', 
     'md', 
     'md_graduated_at', 
     'associate_professor', 
     'associate_professor_graduated_at' 
    ]; 

    public function setBornAttribute($date) { 
     $this->attributes['born'] = Carbon::createFromFormat('Y-m-d', $date); 
    } 

    public function users() { 
     return $this->belongsTo('App\User', 'user_id', 'id'); 
    } 
} 

エラー:Laravel定義Aミューテータ

SQLSTATE [22007]:無効日時書式:1292誤った日付値:行1で生まれた列の ''26/1988' 分の10 (SQL :更新

user_information

は、更新する方法:

public function updateUser($request, $id) { 
     $user = User::with('userInformation')->findOrFail($id); 
     $user->update(array_filter($request->all())); 
     $user->userInformation()->update(array_filter($request->only([ 
      'title', 
      'first_name', 
      'last_name', 
      'img_path', 
      'born', 
      'gender', 
      'address', 
      'country_id', 
      'about', 
      'institution', 
      'area_of_expertise', 
      'cv_path', 
      'facebook', 
      'twitter', 
      'instagram', 
      'linkedin', 
      'university', 
      'university_graduated_at', 
      'md', 
      'md_graduated_at', 
      'associate_professor', 
      'associate_professor_graduated_at' 
     ]), 'strlen')); 

     return User::with('userInformation')->findOrFail($id); 
    } 

私は生まれた日付d/m/Y形式をユーザーインターフェイスから送信します。私はMySQLでこのデータを格納する際に、私はY-M-Dに再フォーマットするVEの..

Iはミューテータをグーグルとが見つかりました: https://laravel.com/docs/5.3/eloquent-mutators

Iは、ユーザ情報モデルにsetNameAttribute機能を追加しました。そして私はそのページをリフレッシュして、もう一度試しました。しかし何も変わっていない。私は同じエラーがあります。

この問題を解決するにはどうすればよいですか?

p.s. :私はあなたが以下のようにモデルに$ DATEFORMATプロパティを設定する必要がありますLaravel 5.3

+0

あなたは、私は、コードをデバッグ –

答えて

0

チェンジセット機能へ:

public function setBornAttribute($date) { 
    $this->attributes['born'] = Carbon::createFromFormat('d/m/Y', $date)->format('Y-m-d'); 
} 
+0

... getBornAttributeコールをDBへ格納する前にY-M-Dに変換する必要がありますがsetBornAttributeは、更新時には呼び出しません。代わりにこれを試してみてください。 – Ozgun

+0

あなたは生まれた価値をどのように設定しますか? 'fill'関数を使用しても実行されない場合は、' $ model-> born = $ value;を使用してください。 – Aboudeh87

1

炭素を使用parse。ここで

public function setBornAttribute($value) 
{ 
    $this->attributes['born'] = Carbon::parse($value); 
} 
0

Laravelには、日付フィールドのネイティブサポートがあります。

class UserInformation extends Model { 

    protected $dates = [ 
    'created_at', 
    'updated_at', 
    'born' 
]; 

//Rest of model without mutator 

} 
関連する問題