Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Check if input is from console

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.

like image 603
cre8 Avatar asked May 22 '17 11:05

cre8


2 Answers

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

like image 126
Ian Avatar answered Oct 10 '22 22:10

Ian


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

like image 22
Mozammil Avatar answered Oct 11 '22 00:10

Mozammil