*/ class ProductFactory extends Factory { /** * Define the model's default state. * * @return array */ public function definition(): array { // 定義豐富的中文測試資料庫 $productNames = [ '高山烏龍茶', '茉莉綠茶', '特級紅茶', '四季春茶', '阿薩姆紅茶', '錫蘭紅茶', '普洱茶', '珍珠粉圓', '波霸粉圓', '椰果', '仙草凍', '愛玉凍', '布丁', '紅豆', '綠豆', '果糖', '黑糖漿', '蜂蜜', '蔗糖液', '煉乳', '奶精粉', '鮮奶油', '全脂鮮乳', '低脂鮮乳', '燕麥奶', '檸檬原汁', '百香果漿', '芒果果泥', '草莓果醬', '柳橙濃縮汁', '塑膠杯 (700cc)', '紙杯 (500cc)', '封口膜', '粗吸管', '細吸管', '杯蓋', '外帶提袋 (單杯)', '外帶提袋 (雙杯)', '吸管套', '杯架' ]; $brands = [ '統一', '光泉', '味全', '雀巢', '立頓', '天仁', '台糖', '義美', '開元', '瑞穗', '六甲田莊', '南亞塑膠' ]; $specs = [ '業務用 5kg裝', '100入/袋', '業務號 3L', '特級品', 'A級', '家庭號 2L', '10kg/箱', '500g/罐' ]; $units = ['包', '罐', '瓶', '箱', '袋', '個', '支', '公斤', '公升']; $baseUnit = $this->faker->randomElement($units); $largeUnits = ['箱', '袋', '桶', '磨', '組']; $largeUnit = $this->faker->randomElement($largeUnits); $purchaseUnits = ['箱', '棧板', '車']; $purchaseUnit = $this->faker->randomElement($purchaseUnits); // 隨機取得一個 Category,若沒有則略過 $category = Category::inRandomOrder()->first(); // 為了讓名稱不重複,可以加個隨機形容詞或編號,或者直接用 faker 但指定語系 (若 env 不能改) // 這裡我們混搭:隨機選一個品名 + 隨機品牌 + 隨機規格,組成較真實的商品描述概念 $name = $this->faker->randomElement($productNames); $brand = $this->faker->randomElement($brands); $spec = $this->faker->randomElement($specs); return [ 'code' => strtoupper($this->faker->unique()->bothify('??###')), 'name' => $name . ' (' . $brand . ')', // 例如:高山烏龍茶 (天仁) 'category_id' => $category ? $category->id : null, 'brand' => $brand, 'specification' => $spec, 'base_unit' => $baseUnit, 'large_unit' => $largeUnit, 'conversion_rate' => $this->faker->numberBetween(10, 1000), 'purchase_unit' => $purchaseUnit, ]; } }