让我的表设置时间戳字段,以便在字段中创建和更新。
在我的模型中,我这样做:
protected $dates = ['created_at', 'updated_at'];
但是在调用日期时:
$p->created_at->diffForHumans()
我得到了
Call to a member function diffForHumans() on string
我很确定这应该有效。我以前在不同型号上使用过相同的次数等,但这不起作用。
答案 0 :(得分:5)
默认情况下,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();
答案 1 :(得分:5)
我在5.2版中使用的Laravel diffForHumans()
功能仅在您使用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
的新文件夹例如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/
答案 2 :(得分:2)
对于既不是created_at的列也不需要使用Carbon,而update_at只需将新列(如expired_at)添加到模型中:
public ResponseEntity<ImageToken> postImage(@RequestPart("image") final MultipartFile file) {
然后你可以使用 - &gt; diffForHumans();
https://laravel.com/docs/5.3/eloquent-mutators#date-mutators
答案 3 :(得分:0)
您必须使用<tbody ng-controller="ProductsCtrl">
<tr ng-repeat="product in products | orderBy: 'category'">
<td>{{ product.category}}</td>
<td>{{ product.task}}</td>
<td><img class="user" src="{{ product.user }}"></td>
<td>{{ product.status }}</td>
<td>{{ product.due | date:'MMMM dd' }}</td>
<td>{{ product.notes }}</td>
<td>{{ product.read }}<a class="fa fa-check" ng-
click="markCompleted(product)"></a>
<i class="fa fa-comment"></i>
<i class="fa fa-bars"></i>
</td>
</tr>
</tbody>
,如下所示:
Carbon
答案 4 :(得分:0)
如果在刀片视图中:
GestureDetector (
onPanUpdate: (dis) {
if (dis.delta.dx > 0) {
//User swiped from left to right
} else if (dis.delta.dx < 0) {
//User swiped from right to left
}
}
child: yourWidget,
)