har*_*ryg 5 php datetime laravel laravel-5
所以我App\Post在我的应用程序中有一个模型,定义如下:
namespace App;
class Post extends Model
{
use SoftDeletes;
protected $dates = ['created_at', 'updated_at', 'published_at', 'deleted_at'];
// etc...
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个模型工厂,这是Laravel 5.1中的一个不错的新功能,用于定义a的蓝图,Post如下所示:
$factory->define('App\Post', function($faker) {
return [
'title' => $faker->sentence,
'content' => $faker->paragraph,
'published_at' => $faker->dateTimeThisMonth(),
];
});
Run Code Online (Sandbox Code Playgroud)
如我们所见,我将该published_at字段设置为该月由Faker实例生成的随机日期。使用的方法返回的实例DateTime。
但是,当我生成一些Posts时,我发现该published_at字段为null,这表明该DateTime实例未正确解释。
我发现如果我将该行更改为:
'published_at' => Carbon::instance($faker->dateTimeThisMonth())->toDateTimeString(),
Run Code Online (Sandbox Code Playgroud)
实质上将转换DateTime为Carbon,然后输出日期时间字符串,例如"2015-06-15 13:44:23",它可以正常工作。
这真的是在模型工厂中定义假日期的最佳方法吗?我以为我published_at在$datesLaravel数组中定义的事实将解释DateTime(或Carbon)实例并保存它而无需提供字符串。
编辑
我发现这对于简单的Eloquent创建也不起作用:
例如,如果我跑步
App\Post::create([
'title' => $title,
'content' => $faker->paragraph(4),
'published_at' => new Carbon,
'created_at' => Carbon::parse('2015-06-16')
]);
Run Code Online (Sandbox Code Playgroud)
在published_at和created_at场均仍然空。有任何想法吗?
由于 Faker 正在返回一个 DateTime-Object,它不代表像 mysql like it ( Y-m-d H:i:s)这样的日期字符串,该字段将被设置为 null。
但是,您应该能够访问 objects 属性date以获取正确的字符串,如下所示:
$faker->dateTimeThisMonth()->format('Y-m-d H:i:s')
Run Code Online (Sandbox Code Playgroud)
这应该返回这样的日期 string '2015-06-19 13:07:07' (length=19)
| 归档时间: |
|
| 查看次数: |
4170 次 |
| 最近记录: |