Unexpected data found during save on eloquent / Laravel

27,204

Solution 1

You array returned from getDates was merged with the dafault one resulting in:

['created_at','updated_at','deleted_at','date','created_at','updated_at'];

so use only 'date' there and should be fine.


Try setting up a mutator for 'date' to convert the data from input into timestamp format. The error you get is not on Eloquent but Carbon.

public function setDateAttribute($value)
{
    $this->attributes['date'] = Carbon\Carbon::createFromFormat('d-m-Y h:i', $value);
}

Also there is mistake in the docs, as getDates defines date accessors, not mutators..

Solution 2

Try this:

Carbon::createFromFormat('d.m.Y H:i', $request->publishdate);    
Share:
27,204
Fabrizio Fenoglio
Author by

Fabrizio Fenoglio

Updated on November 08, 2020

Comments

  • Fabrizio Fenoglio
    Fabrizio Fenoglio over 3 years

    I have one more field on the database over the created_at and updated_at as TIMESTAMP the field name is date.

    So i overwritten the method getDates() on my model eloquent because i wanted that field be instantiated from Carbon.

    public function getDates()
    {
       return ['date','created_at','updated_at'];
    }
    

    But when i go to create a new record on the database it throw me an exception:

    InvalidArgumentException Unexpected data found. Unexpected data found. Unexpected data found.

    Ps: the value sent from the form is in EU format: d-m-Y h:i

    I don't know how figure out this problem any suggestion are appreciated

  • Fabrizio Fenoglio
    Fabrizio Fenoglio about 10 years
    Tried but seem not be this one the problem thanks. Anyway is not merged but is overwritten.
  • Jarek Tkaczyk
    Jarek Tkaczyk about 10 years
    Yes, my bad. I just now realized what the problem is. Check the edit.
  • Fabrizio Fenoglio
    Fabrizio Fenoglio about 10 years
    Yes this is the right answer i tried on this way for see if it work and it does. :) Thanks mate.
  • Kamlesh
    Kamlesh almost 5 years
    If you are modifying format of any date then use alias name like DB::raw('(case when backup_records.created_at IS NOT NULL then date_format(backup_records.created_at, "%d-%m-%Y %h:%i:%s %p") else "Not Available" end) as created_at_text') instead of 'created_at'.