11.
建立商品測試資料
- 我們可以建立一個模型工廠, 使用 Artisan 命令
make:factory
並指定模型來快速建立模型工廠:
php artisan make:factory ProductFactory --model=Product
- 這個新的模型工廠將被放置在
/專案/database/factories
目錄中。
<?php
/* @var $factory \Illuminate\Database\Eloquent\Factory */
use App\Product;
use Faker\Generator as Faker;
$factory->define(Product::class, function (Faker $faker) {
return [
//
];
});
- 修改一下內容,讓工廠自動產生商品的圖片及內容:
<?php
/* @var $factory \Illuminate\Database\Eloquent\Factory */
use App\Product;
use Faker\Generator as Faker;
$factory->define(Product::class, function (Faker $faker) {
return [
'title' => $faker->company,
'description' => $faker->realText(100),
'image' => $faker->imageUrl,
'on_sale' => true,
'price' => $faker->randomNumber(4),
];
});
- 標題部份一般都用
$faker->word
居多,不過若要顯示中文,$faker->word
並不支援,所以此處改為$faker->company
,以便後續可以產出中文測試語句。
- 描述部份也是,成用的有
$faker->sentence
、$faker->paragraph
或$faker->text
,不過一樣不支援中文,所以,這裡改用$faker->realText
來產生中文句子。
- 其他常用的格式可以參考這裡:https://github.com/fzaninotto/Faker#formatters
- 這裡有各種方法的使用範例:https://www.cnblogs.com/love-snow/articles/7655450.html
- 若欲產生中文資料,請修改
\專案\config\app.php
,修改其faker_locale
的設定值即可。
'faker_locale' => 'zh_TW',
- 我們可以利用tinker來測試一下(要離開tinker請輸入
exit
)
php artisan tinker
- 先建立一個師品測試資料試試(請注意,內容是毫無意義的,只要測試的格式正確即可)
factory(App\Product::class)->make()
- 然後建立5題
factory(App\Product::class,5)->make()
- 建立5題並指定exam_id為1,然後存入資料庫:
factory(App\Product::class,5)->create()
- 可以利用此方式來建立大量測設內容,若工廠內容有改變,請離開tinker後再重新進入執行。