Laravel工厂创建雄辩的模型会创建具有错误属性的模型
我有一个播种机,我尝试使用Laravel工厂创建雄辩的模型会创建具有错误属性的模型,laravel,eloquent,Laravel,Eloquent,我有一个播种机,我尝试使用工厂将可能性绑定到问题 ... $question->possibilities()->saveMany( factory(Possibility::class, $random_num) ->make() ->each(function ($item, $index) use ($correct_answer) { if ($index === $correct_answer) {
工厂将可能性
绑定到问题
...
$question->possibilities()->saveMany(
factory(Possibility::class, $random_num)
->make()
->each(function ($item, $index) use ($correct_answer) {
if ($index === $correct_answer) {
$item->correct = true;
}
})
);
...
当我使用factory时,雄辩模型的属性为answer
,尽管我从迁移中删除了answer列,并删除了可能性
模型中出现的所有answer
可能性模型
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Possibility extends Model
{
protected $fillable = ['question_id', 'correct'];
public function question()
{
return $this->belongsTo('App\Models\Question');
}
}
编辑
遗漏了一些非常明显的东西,可能性因素
定义本身。感谢@lagbox指出这一点。这可能是您所需要的
factory(Possibility::class, $random_num)->create([
'question_id' => $question->id,
])->each(function ($item, $index) use ($correct_answer) {
if ($index === $correct_answer) {
$item->correct = true;
} else {
$item->correct = false;
}
})
您为可能性创建了一个工厂。因为您正在定义要使用的属性数组。您正在返回一个带有answer
键的数组。删除该选项。可能是因为您为可能性创建的工厂正在返回一个带有“answer”键的数组。。。eloquent对您的模式一无所知,您可以将任何想要的属性分配给任何模型。我有点困惑您的问题是什么。你介意再详细解释一下什么是错的吗?这是一个问题还是一个答案?当你发布答案时,请发布答案。要请求澄清,请留下一条注释,类似于“在其他块中设置$item->correct=false;
是否会更改任何内容?”。
$possibility = Possibility::create([
'question_id' => $question->id,
'correct' => 0
]);
factory(Possibility::class, $random_num)->create([
'question_id' => $question->id,
])->each(function ($item, $index) use ($correct_answer) {
if ($index === $correct_answer) {
$item->correct = true;
} else {
$item->correct = false;
}
})