Laravel 8 a le App/Models
répertoire par défaut pour les classes Model. La Illuminate\Database\Eloquent\Factories\Factory
fonction 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/ModelName
ou App/Models/ModelName
si 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?
Comme vous pouvez le voir ici , il existe une méthode appelée guessFactoryNamesUsing
qui 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
Déjame decir algunas palabras