22

I want to share a variable of my views with:

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        \Schema::defaultStringLength(191);
        $customers = Customer::get();
        \View::share('customers', $customers);
    }
}

it works as expected, but when I want to migrate my tables via artisan it throws an error, that the table for customers was not found because it is checked BEFORE the migration starts. So I need something like

if(!artisan_request) {
    //request to laravel is via web and not artisan
} 

But I haven't found anything in the documentation.

cre8
  • 13,012
  • 8
  • 37
  • 61

2 Answers2

49

You can check if you are running in the console by using

app()->runningInConsole()

Underneath that, all it does is check the interface type

return php_sapi_name() == 'cli' || php_sapi_name() == 'phpdbg'

You can find more on the PHP Docs site

Ian
  • 3,539
  • 4
  • 27
  • 48
11

To detect whether the app is running in console, you can do something like this:

use Illuminate\Support\Facades\App;

if(App::runningInConsole())
{
  // app is running in console
}

See, illuminate/Foundation/Application.php:520

Mozammil
  • 8,520
  • 15
  • 29