Laravel Eloquent ORM Factory:当我使用工厂创建模型时,将在afterCreating之前调用afterMaking;

问题描述 投票:0回答:1

根据Laravel的documentation,您可以指定触发器afterMakingafterCreating。但是我无法弄清楚何时调用这些触发器以及按什么顺序进行]

所以我有这种情况:

$myModel=factory(MyModel::class)->create();

使用以下工厂:

use Faker\Generator as Faker;
use App\Model\MyModel

$factory->define(MyModel::class,function(Faker $faker){

return [
   'sum'=>10
];
});

$factory->afterCreating(MyModel::class,function(MyModel $model, Faker $faker){

  $model->sum=30;
  $model->save();
});


$factory->afterCreating(MyModel::class,function(MyModel $model, Faker $faker){

  $model->sum=30;
  $model->save();
});

$factory->afterMaking(MyModel::class, function(MyModel $model, Faker $faker){
   $model->sum=40;
});

那么以下哪个假设是正确的?

  1. 首先创建MyModel实例,然后调用afterMaking闭包,然后将对象写入Db,最后调用afterCreating
  2. 首先创建一个MyModel实例,将对象写入Db,最后调用afterCreating闭包。
  3. 首先创建MyModel实例,然后调用afterCreating闭包,然后将对象写入数据库。

根据Laravel的文档,您可以在afterMaking和afterCreating中指定触发器。但是我不知道何时调用这些触发器以及以什么顺序调用,所以我有这个...

php laravel laravel-5.6
1个回答
0
投票

create方法在内部调用makemake将呼叫callAfterMakingcreate保存记录后将调用callAfterCreating

© www.soinside.com 2019 - 2024. All rights reserved.