Carbon.php无法找到分离符号数据缺失

时间:2016-06-22 02:34:49

标签: php laravel date laravel-5.2 php-carbon

首先,我检索所有记录,

//get inventory items
$inv = inventory::all();

然后我循环检索记录并修改created_at和updated_at数据,使其更具人性化日期。

foreach($inv as $i){
    $i->created_at = date("M d, Y",strtotime($i->created_at));
    $i->updated_at = date("M d, Y",strtotime($i->updated_at));
}

但它会返回此错误,

  

Carbon.php第425行中的InvalidArgumentException:意外数据   找到。发现意外数据。找不到分隔符号   数据缺失

请提供任何想法,帮助,线索,建议和建议吗?

这是我的模特

namespace App;

use Illuminate\Database\Eloquent\Model;

class inventory extends Model
{
    protected $table = "inventory";
    protected $primaryKey = "item_id";
    public $incrementing = false;

    public function profile(){
        return $this->belongsTo('App\profile','username');
    }
    public function inventory_images(){
        return $this->hasMany('App\inventory_images','item_id');
    }
}

在刀片中,我可以使用

{{ date("M d, Y",strtotime($i->created_at)) }}

{{ date("M d, Y",strtotime($i->updated_at)) }}

它运作得很好。

1 个答案:

答案 0 :(得分:5)

我认为你这是错误的做法。数据库中的数据不需要更易于人类阅读,只需要人类实际显示interacts

要解决此问题,我们将创建一个自定义accessor方法,该方法将应用于created_at. You can recreate this for the updated_at`的所有调用。

public function getCreatedAtAttribute($timestamp) {
    return Carbon\Carbon::parse($timestamp)->format('M d, Y');
}

然后,当您致电$model->created_at时,您的属性将以该格式返回。

如果由于某种原因您绝对需要以该格式存储的日期,那么您需要向模型添加一个属性,告诉它应根据特定类型格式化timestamp列,例如: / p>

protected $dateFormat = 'M d, Y';

<强>旁注

涉及Carbon的原因是它适用于$table->timestamps()生成的所有列,因此created_atupdated_at列。此外,如果您在模型中向protected $dates = []数组添加更多列,那么这些列也将由Carbon自动处理。