代码之家  ›  专栏  ›  技术社区  ›  JsWizard

如何利用拉拉维尔模型厂的特点?

  •  1
  • JsWizard  · 技术社区  · 7 年前

    如果模型factroy如下,那么如何在这里使用trait getdata()?

    此代码不起作用。

    <?php
    
    use App\Working;
    use App\Traits\Calculate;
    
    ...
    
        $factory->define(App\Working::class, function  (Faker\Generator $faker) {        
           ...    
           $getData = $this->getData();        
           ...     
           return['get_data' => $getData];
    
        }
    

    错误消息:

    symfony\component\debug\exception\fatalthrowableerror:对未定义方法的调用将点亮\database\elount\factory::getdata()。

    异常跟踪:

    1照明\数据库\雄辩\工厂::关闭(对象(Faker\Generator),[]) g:\test\vendor\laravel\framework\src\light\database\elount\factorybuilder.php:263

    2调用用户func(对象(闭包),对象(faker\generator),[] g:\test\vendor\laravel\framework\src\light\database\elount\factorybuilder.php:263

    1 回复  |  直到 7 年前
        1
  •  5
  •   apokryfos    7 年前

    可能不是你要找的,但这里有:

    注意:在php 7中添加了匿名类

    <?php
    
    use App\Working;
    use App\Traits\Calculate;
    
    // ...
    $factory->define(App\Working::class, (new class {
         use Calculate;
         public function generatorFunction() {
             return function (Faker\Generator $faker) {
                 // ...
                 $getData = $this->getData();
                 // ...
                 return ['get_data' => $getData];
    
             };
         }
     })->generatorFunction());
    
    推荐文章