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