让我的表设置时间戳字段,以便在字段中创建和更新.
在我的模型中,我这样做:
protected $dates = ['created_at', 'updated_at'];
但是在致电日期时:
$p->created_at->diffForHumans()
我明白了
Call to a member function diffForHumans() on string
我很确定这应该有用.我以前在不同型号上使用过相同的次数等,但这不起作用.
默认情况下,Eloquent会将created_at和updated_at列转换为Carbon实例,后者提供各种有用的方法,并扩展本机PHP DateTime类.
阅读:https://laravel.com/docs/5.1/eloquent-mutators#date-mutators
只需检查您的composer.json文件中的nesbot/carbon包.如果您没有,可以通过键入来安装它
composer require nesbot/carbon
替代解决方案是,
您可以使用Carbon :: parse()动态创建对象.
Carbon::parse($p->created_at)->diffForHumans();
该Laravel diffForHumans()
我在5.2版本已经使用的功能,只有当您使用的是工作created_at
和updated_at
,否则会带来你的Call to a member function diffForHumans() on string
错误.即使您已经使用了created_at
,但是请updated_at
确保在您的迁移中,您还没有使用过:
$table->timestamp('created_at'); $table->timestamp('updated_at');
但你已经习惯了
$table->timestamps();
有根据laravel但只是柜面出于某种原因,你想用的不同diffForHumans()
功能列,既不created_at
和updated_at
,例如 expired_at
,用碳
我总结的是:
您可以Addon
在laravel项目文件夹中调用第一个创建新文件夹,例如test-laravel
然后在文件夹中创建一个名为的新文件Carbon.php
.
在Carbon.php
文件内输入:
namespace Carbon; class Carbon extends \DateTime{ // }
然后转到您的控制器,例如ProductController.php
将Carbon命名空间添加到文件中:
namespace Addon; namespace App\Http\Controllers; use Carbon\Carbon; use ... class ProductController extends Controller{ $expire_date_string = '2016-07-27 12:45:32'; // Parse date with carbon $carbonated_date = Carbon::parse($expire_date_string); // Assuming today was 2016-07-27 12:45:32 $diff_date = $carbonated_date->diffForHumans(Carbon::now()); echo $diff_date; // prints "1 month after" }
有关碳控制器的更多信息,请访问:http://carbon.nesbot.com/docs/