所以,我有我的應用程序的App\Post
模型,定義如下:Laravel模型工廠和雄辯;設定日期
namespace App;
class Post extends Model
{
use SoftDeletes;
protected $dates = ['created_at', 'updated_at', 'published_at', 'deleted_at'];
// etc...
}
我創建了一個模型工廠,一個不錯的新功能,如Laravel 5.1的定義Post
的藍圖如下:
$factory->define('App\Post', function($faker) {
return [
'title' => $faker->sentence,
'content' => $faker->paragraph,
'published_at' => $faker->dateTimeThisMonth(),
];
});
我們可以看到我設置published_at
場這個月是一個隨機的日期,由Faker
實例作爲產生。使用的方法返回DateTime
的實例。
但是,當我生成一些Post
s我發現published_at
字段爲空,這表明DateTime
實例未被正確解釋。
我發現,如果我改變該行:
'published_at' => Carbon::instance($faker->dateTimeThisMonth())->toDateTimeString(),
基本上轉換DateTime
到Carbon
然後例如輸出日期時間串"2015-06-15 13:44:23"
,它工作正常。
這是真的是最好的方式來定義模型工廠的日期日期?我會想到,我在$dates
陣列中定義了published_at
這一事實,Laravel會解釋DateTime
(或Carbon
)實例並保存它,而不必提供字符串。
編輯
我發現,這也是不工作的簡單雄辯創建:
例如如果我跑
App\Post::create([
'title' => $title,
'content' => $faker->paragraph(4),
'published_at' => new Carbon,
'created_at' => Carbon::parse('2015-06-16')
]);
的published_at
和created_at
領域仍然空。有任何想法嗎?
我見過一些Laracasts視頻,Jeffrey總是在工廠裏使用Carbon。所以,我會說這是最好的方式 – zeratulmdq