I am getting the error as
“IlluminateDatabaseQueryException : SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘key’ in ‘where clause’ (SQL: select * from
admin_settingswherekey!= null limit 1)”
because of the function in app/Providers/AppServiceProvider.php
public function boot()
{
if (Schema::hasTable('admin_settings')) {
$google_analytics_details = AdminSetting::where('key','!=','null')->first();
}else {
$google_analytics_details = '';
}
View::share('google_analytics_details', $google_analytics_details);
}
when i comment the code of the boot function then it migrates successfully.
I am looking an alternative for this view sharing. can anyone help me??
My migration file content:
<?php
use IlluminateDatabaseMigrationsMigration;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateSupportFacadesSchema;
class UpdateAdminSettingsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
//
Schema::table('admin_settings', function (Blueprint $table) {
$table->dropColumn('google_analytics_code');
});
Schema::table('admin_settings', function (Blueprint $table) {
$table->longText('key')->nullable()->after('id');
$table->longText('value')->nullable()->after('key');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//
Schema::table('admin_settings', function (Blueprint $table) {
});
}
}
Advertisement
Answer
you can use view composers doc
if you want to share variable to one view (that may be loaded or extended to other views e.g. layout.app) you can specify the view name as example below
simple example:
View::composer('view-name', function ($view) {
$view->with('key', 'value');
});
or if you need it in all of your views you can use * as view name like this
View::composer('*', function ($view) {
$view->with('key', 'value');
});
Another way to solve your problem
your issue with migration can also be solved with a condition before sharing the view
public function boot()
{
if ( !app()->runningInConsole() ){
// your code here
}
}