Rumah > Soal Jawab > teks badan
Saya perlu mengusahakan kilang 50
次,因此在 DatabseSeeder
Dalaman:
public function run() { for($i=1;$i<=50;$i++){ (new CategoryQuestionFactory($i))->create(); } }
Seperti yang anda lihat, saya cuba menamakan kelas $i
的变量作为参数传递给 CategoryQuestionFactory
.
Kemudian di kilang ini saya mencuba ini:
class CategoryQuestionFactory extends Factory { protected $counter; public function __construct($c) { $this->counter = $c; } /** * Define the model's default state. * * @return array<string, mixed> */ public function definition() { $question = Question::find($this->counter); return [ 'category_id' => $this->faker->numberBetween(1,22), 'question_id' => $question->id ]; } }
Tetapi apabila saya menjalankan php artisan db:seed
di terminal, saya mendapat ralat ini:
Panggil talian paip fungsi ahli() pada null
Dalam C:xampphtdocsforumrootvendorlaravelframeworksrcIlluminateDatabaseEloquentFactoriesFactories.php:429
Jadi apa yang berlaku di sini? Bagaimana untuk menghantar nilai dengan betul sebagai parameter ke kelas kilang?
Selain itu, dalam IDE kaedah __construct
kilang, saya mendapat mesej berikut:
Berikut ialah tangkapan ralat dalam IDE:
P粉4477850312024-01-04 13:12:02
Nampaknya anda ingin menyemai jadual perantaraan. Terdapat beberapa kaedah yang boleh anda gunakan semasa menyemai benih, salah satunya ialah has()
iaitu kaedah yang sering saya gunakan.
/** * will create a one question and 3 category then create a data in the intermediate table. * expected data : * question_id | category_id * 1 1 * 1 2 * 1 3 */ Question::factory()->has( Category::factory()->count(3) )->create();
Andaikan anda ingin mencipta 100 soalan dan 5 kategori
/** * will create a 100 question and 5 category then create a data in the intermediate table. * expected data : * question_id | category_id * 1 1 * 1 2 * 1 3 * 1 4 * 1 5 * 2 1 * 2 2 * 2 3 * 2 4 * 2 5 * until the 100th question will have a 5 categories */ Question::factory(100)->has( Category::factory()->count(5) )->create();