Organizando melhor os Models dentro do Laravel
Muitas vezes me eu quero deixar a minha estrutura de projeto mais organizada e o Laravel deixa os Models meio soltos dentro do projeto.
Por padrão, os modelos estão localizados na pasta App do aplicativo, o que pode se tornar uma bagunça se você estiver trabalhando em um aplicativo grande.
Então, decidi organizar meus modelos dentro de App\Models
Atualizando o Model User
Para conseguir isso, a primeira coisa que temos que fazer é mover para a App/Models e atualizar o namespace de acordo.
Isso requer que você atualize todos os arquivos que referenciam a App\User. O primeiro é config/auth.php:
'provider' => [ 'users' => [ 'driver' => 'eloquent', 'model' => App\Models\User :: class, // alterado ], ],
|
então o config/services.php:
'stripe' => [ 'model' => App\Models\User:: class, // alterado 'key' => env ('STRIPE_KEY'), 'secret' => env ('STRIPE_SECRET'), ],
|
e por último, mas não menos importante, o database/factories/UserFactory.php
$factory->define(App\Models\User::classe, function(Faker $faker) { return [ 'name' => $faker->name, 'email' => $faker->unique()->safeEmail, 'email_verified_at' => now(), 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password 'remember_token' => Str::random(10), ]; });
|
Gerando Models daqui para frente
Agora, precisamos alterar para a geração de novos arquivos dentro da pasta Models
Para corrigir isso, podemos estender o arquivo padrão ModelMakeCommand
e criar um novo arquivo dentro de App\Console\Commands
<?php namespace App\Providers; use Illuminate\Support\ServiceProvider; use App\Console\Commands\ModelMakeCommand; class AppServiceProvider extends ServiceProvider { /** * Bootstrap any application services. * * @return void */ public function boot() { // } /** * Register any application services. * * @return void */ public function register() { $this->app->extend('command.model.make', function ($command, $app) { return new ModelMakeCommand($app['files']); }); } }
|
Após isso é só criar uma ligação dentro do App\Providers\AppServiceProvider.php
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
\\Aqui tbm precisa adicionar
use App\Console\ModelMakeCommand\Command;
class AppServiceProvider extends ServiceProvider { /** * Register any application services. * * @return void */ public function register() { // }
/** * Bootstrap any application services. * * @return void */ public function boot() {
//adicionar essa parte $this->app->extend('command.model.make', function ($command, $app) { return new ModelMakeCommand($app['files']); }); } }
|
Nenhum comentário:
Postar um comentário