在控制器中执行一次该方法,并且不更新

时间:2019-11-16 11:01:43

标签: php laravel

在控制器中,我为羊模型自动生成了corral_id。所以,当它更新的时候一直都在生成页面。我需要在开始时生成一次。如何执行此操作。

public function index():CorralResourceCollection
{
    $sheeps = Sheep::all();
    $corrals = Corral::all();

    foreach($sheeps as $sheep){
        $sheep->corral_id = $corrals->random()->id;
        $sheep->save();
    }

    return new CorralResourceCollection(Corral::with('sheeps')->paginate());
}

绵羊迁移

$table->bigIncrements('id');
        $table->string('name');
        $table->integer('corral_id')->unsigned()->nullable();

        $table->foreign('corral_id')->references('id')->on('corrals');

1 个答案:

答案 0 :(得分:0)

您可以在更新时简单地忽略corral_id。这样它将保留先前的值。

foreach($sheeps as $sheep){
    $sheep->corral_id = $corrals->random()->id; // ignore this line
    $sheep->save();
}

如果此corral_id是您的主键,并且您不想将其自动递增,则可以在Corral模型中将$ incrementing设置为false。

protected $primaryKey = 'your_key_name'; // this could be id or corral_id in your case

public $incrementing = false;