I have a running Laravel application which has the default Console/Kernel.php where all my scheduled commands are defined as usual.
But now I have another Laravel application that I am trying to merge with this existing application, and I have created a folder inside the existing Laravel application and I am using a Service Provider to load all the things. This way I can keep the code of the two projects separate but at the same time all features under the same repository.
<?php
namespace SecondApp;
use IlluminateSupportServiceProvider;
class SecondAppServiceProvider extends ServiceProvider
{
    /**
     * Register services.
     *
     * @return void
     */
    public function register()
    {
        include __DIR__ . '/routes/web.php';
        include __DIR__ . '/routes/api.php';
        $this->app->register('SecondAppAppProvidersAppServiceProvider');
        $this->app->register('SecondAppAppProvidersAuthServiceProvider');
        $this->app->register('SecondAppAppProvidersBroadcastServiceProvider');
        $this->app->register('SecondAppAppProvidersEventServiceProvider');
        $this->app->register('SecondAppAppProvidersJobServiceProvider');
        $this->app->register('SecondAppAppProvidersMailerServiceProvider');
        $this->app->register('SecondAppAppProvidersRouteServiceProvider');
        $this->app->register('SecondAppAppProvidersStorageServiceProvider');
    }
    /**
     * Bootstrap services.
     *
     * @return void
     */
    public function boot()
    {
        $this->loadMigrationsFrom(__DIR__ . '/database/migrations/');
        $this->publishes([
            __DIR__ . '/config/' => config_path()
        ], 'second-app-config');
        $this->publishes([
            __DIR__ . '/resources/' => base_path('resources')
        ], 'second-app-resources');
    }
}
This is what my service somewhat looks like. Everything else seems to work well, roues, migrations, registering service providers and so on, but this second project now also has Console/Kernel.php file. And those commands are not being called yet, obviously because laravel doesn’t know about it. So I am wondering how can I tell Laravel to look at that as well? Is this possible, or will I have merge the code into one main Kernel.php?
I have the same question about Http/Kernel.php as well, but I am sure if someone can suggest how to make one work, I can make the other work as well.
Advertisement
Answer
To load commands, need to add them like this in the register method of service provider
$this->commands([
    AppConsoleCommandsCommandOne::class,
    AppConsoleCommandsCommandTwo::class,
]);
and so on, keep adding commands to the array.
And to schedule these commands refer to this answer -> How to schedule Artisan commands in a package?
So add something like this to the boot method of your service provider:
$this->callAfterResolving(Schedule::class, function (Schedule $schedule) {
    $schedule->command('some:command')->everyMinute();
});