gpt4 book ai didi

php - 如何将值作为参数发送到工厂类

转载 作者:行者123 更新时间:2023-12-05 03:16:54 26 4
gpt4 key购买 nike

我需要运行工厂 50 次,所以在 DatabseSeeder 中:

public function run()
{
for($i=1;$i<=50;$i++){
(new CategoryQuestionFactory($i))->create();
}
}

如您所见,我尝试将名为 $i 的变量作为参数传递给 CategoryQuestionFactory 类。

然后在这个工厂,我尝试了这个:

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
];
}
}

但是当我在终端运行 php artisan db:seed 时,我得到这个错误:

Call to a member function pipe() on null

atC:\xampp\htdocs\forum\root\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Factories\Factory.php:429

那么这里出了什么问题?如何正确地将值作为参数发送到工厂类?

此外,在该工厂的 __construct 方法的 IDE 中,我收到此消息:

enter image description here


更新#1:

下面是IDE中错误的捕获:

enter image description here

最佳答案

在我看来,您想要为中间表设置种子。播种时可以使用一些方法,其中之一是 has(),这是我经常使用的方法。

/**
* 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();

假设您要创建 100 个问题和 5 个类别

/**
* 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();

关于php - 如何将值作为参数发送到工厂类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74411525/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com