I am getting the error as
“IlluminateDatabaseQueryException : SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘key’ in ‘where clause’ (SQL: select * from
admin_settings
wherekey
!= 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
}
}