Как использовать черту на фабрике моделей Laravel? - PullRequest
0 голосов
/ 27 июня 2018

Если Model 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: вызов неопределенного метода Illuminate \ Database \ Eloquent \ Factory :: getData ()

Исключительная трассировка:

1 Подсветка \ База данных \ Eloquent \ Factory :: {closure} (Объект (Создатель \ Генератор), []) G: \ Test \ поставщика \ Laravel \ рамки \ SRC \ Осветите \ Database \ Eloquent \ FactoryBuilder.php: 263

2 call_user_func (Объект (Закрытие), Объект (Создатель \ Генератор), []) G: \ Test \ поставщика \ Laravel \ рамки \ SRC \ Осветите \ Database \ Eloquent \ FactoryBuilder.php: 263

1 Ответ

0 голосов
/ 27 июня 2018

Вероятно, не то, что вы ищете, но здесь идет речь:

Вы можете создать встроенный класс, который определяет функцию, которая возвращает реальную функцию, которую вы хотите использовать. Этот встроенный класс может использовать черту.

Примечание: анонимные классы были добавлены в 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());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...