Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel雄辩的ORM工厂:当我用工厂创建模型时,AfterMake是否会在AfterCreation之前调用;_Php_Laravel_Laravel 5.6 - Fatal编程技术网

Php Laravel雄辩的ORM工厂:当我用工厂创建模型时,AfterMake是否会在AfterCreation之前调用;

Php Laravel雄辩的ORM工厂:当我用工厂创建模型时,AfterMake是否会在AfterCreation之前调用;,php,laravel,laravel-5.6,Php,Laravel,Laravel 5.6,根据Laravel的说明,您可以指定触发器在生成后和在创建后。但我无法确定何时调用这些触发器以及调用顺序 所以我有这样一个场景: $myModel=factory(MyModel::class)->create(); 使用以下工厂: use Faker\Generator as Faker; use App\Model\MyModel $factory->define(MyModel::class,function(Faker $faker){ return [ 'sum

根据Laravel的说明,您可以指定触发器
在生成后
在创建后
。但我无法确定何时调用这些触发器以及调用顺序

所以我有这样一个场景:

$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;
});
那么,以下哪些假设是正确的

  • 首先创建一个
    MyModel
    实例,然后调用
    aftermake
    闭包,然后将对象写入数据库,最后调用
    afterCreating
  • 首先创建一个
    MyModel
    实例,然后将对象写入数据库,最后在创建后调用
    闭包
  • 首先创建
    MyModel
    实例,然后调用
    afterCreating
    闭包,然后将对象写入数据库

  • create
    方法在内部调用
    make
    make
    将在创建实例后调用
    callaftermake
    <代码>创建
    将在存储记录后调用
    callAfterCreating


    因此,选项1。

    正确的方法是首先创建一个MyModel实例,然后调用AfterMake闭包,然后将对象写入数据库,最后调用AfterCreation。对吗?