根據Laravel的documentation on defining relationships within model factories:Laravel工廠關係...尊重創造()或使()
您也可以用在你的工廠關閉定義附加屬性的關係,以模型。例如,如果你想創建一個帖子時,創建新的用戶實例,你可以做到以下幾點:
$factory->define(App\Post::class, function ($faker) {
return [
'title' => $faker->title,
'content' => $faker->paragraph,
'user_id' => function() {
return factory(App\User::class)->create()->id;
}
];
});
我遇到的問題是內引用create()
關係定義。在我看來,這不屬於這裏。
它的偉大工程,如果我想堅持我的數據庫關係:
factory(App\Post::class)->create();
通過直接運行上面的代碼這一點,新App\Post
和新App\User
將被創建並都保存到數據庫。
但如果我只是想new
建立模型(S)和不運行任何東西繼續存在(的話)到數據庫:
factory(App\Post::class)->make();
它做什麼,我想達到一定點。新的App\Post
實例已創建但未保留,但App\Comment
已創建並保留到數據庫。
在我看來,那是我真正想要的是這樣的:
$factory->define(App\Post::class, function ($faker) {
return [
'title' => $faker->title,
'content' => $faker->paragraph,
'user_id' => function() {
// here I only want to declare the relationship,
// not decide whether I want to create() or make()
// the relationship, something like:
return factory(App\User::class)->createOrMake()->id;
// or perhaps something like:
return factory(App\User::class)->id;
}
];
});
最終的結果是,我想相關的數據尊重我嘗試從做通話頂部,向下。做一切。或者創造一切。
我在這裏做錯了什麼?或者這是目前不存在的東西?
謝謝!