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 :
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.Supposons que vous souhaitiez créer 100 questions et 5 catégories