Maison > Questions et réponses > le corps du texte
Je dois diriger une usine 50
次,因此在 DatabseSeeder
À l'intérieur :
public function run() { for($i=1;$i<=50;$i++){ (new CategoryQuestionFactory($i))->create(); } }
Comme vous pouvez le voir, j'ai essayé de nommer la classe $i
的变量作为参数传递给 CategoryQuestionFactory
.
Puis dans cette usine, j'ai essayé ceci :
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 ]; } }
Mais lorsque j'exécute php artisan db:seed
dans le terminal, j'obtiens cette erreur :
Appelez la fonction membre pipeline() sur null
Dans C:xampphtdocsforumrootvendorlaravelframeworksrcIlluminateDatabaseEloquentFactoriesFactory.php:429
Alors, qu'est-ce qui n'a pas fonctionné ici ? Comment envoyer correctement des valeurs en tant que paramètres aux classes d'usine ?
De plus, dans l'IDE de la méthode __construct
de l'usine, j'obtiens le message suivant :
Voici la capture d'erreur dans l'EDI :
P粉4477850312024-01-04 13:12:02
Il me semble que vous souhaitez ensemencer le tableau intermédiaire. Il existe quelques méthodes que vous pouvez utiliser pour semer des graines, l'une d'elles est has()
qui est la méthode que j'utilise souvent.
/** * 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();
Supposons que vous souhaitiez créer 100 questions et 5 catégories
/** * 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();