La classe de fournisseur Laravel 8 `Illuminate \ Database \ Eloquent \ Factories \ Factory` ne peut pas résoudre le nom de la classe ModelNameFactory

Andrey Voskresenskiy

Laravel 8 a le App/Modelsrépertoire par défaut pour les classes Model. La Illuminate\Database\Eloquent\Factories\Factoryfonction a statique resolveFactoryName()pour résoudre le nom de la classe ModelNameFactory

    public static function resolveFactoryName(string $modelName)
    {
        $resolver = static::$factoryNameResolver ?: function (string $modelName) {
            $modelName = Str::startsWith($modelName, 'App\\Models\\')
                ? Str::after($modelName, 'App\\Models\\')
                : Str::after($modelName, 'App\\');

            return static::$namespace.$modelName.'Factory';
        };

        return $resolver($modelName);
    }

La fonction ne fonctionne correctement que pour App/ModelNameou App/Models/ModelNamesi le nom de la classe Model, par exemple, est le Domain/Customers/Models/ModelName, cette fonction ne fonctionne pas correctement. Quelle est la meilleure façon de résoudre ce problème?

Remul

Comme vous pouvez le voir ici , il existe une méthode appelée guessFactoryNamesUsingqui vous permet de dire à Laravel comment il doit deviner le nom de vos usines.

Ajoutez ce qui suit à votre AppServiceProvider:

use Illuminate\Database\Eloquent\Factories\Factory;

public function register()
{
    Factory::guessFactoryNamesUsing(function ($class) {
        return 'Database\\Factories\\' . class_basename($class) . 'Factory';
    });
}

Source :

/**
 * Specify the callback that should be invoked 
 * to guess factory names based on dynamic relationship names.
 *
 * @param  callable  $callback
 * @return void
 */
public static function guessFactoryNamesUsing(callable $callback)
{
    static::$factoryNameResolver = $callback;
}

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados