Laravel 5.2迁移设置默认值报错:调用未定义方法Fluent::default()
Laravel 5.2迁移报错:Call to undefined method Illuminate\Support\Fluent::default()
问题详情
执行php artisan migrate命令时触发如下错误:
[Symfony\Component\Debug\Exception\FatalThrowableError]
Call to undefined method Illuminate\Support\Fluent::default()
对应的迁移代码:
public function up() { Schema::table('render', function (Blueprint $table) { $table->boolean('displayed')->default(false); }); }
已尝试更新composer、修改列名等操作,但仅该迁移存在此问题。
解决方案
检查框架文件完整性:Laravel 5.2中
$table->boolean()应返回ColumnDefinition实例而非Fluent,出现此错误大概率是框架核心文件被篡改或损坏。执行以下命令强制重新安装框架依赖:composer require laravel/framework:5.2.* --no-update composer update laravel/framework --with-all-dependencies排查类冲突:确认迁移文件顶部的use语句正确,未引入错误的类:
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration;避免自定义类与框架原生
Blueprint或ColumnDefinition类重名。使用原生SQL替代:若上述方法无效,可直接用DB语句添加列:
public function up() { DB::statement('ALTER TABLE render ADD COLUMN displayed BOOLEAN DEFAULT FALSE'); } public function down() { DB::statement('ALTER TABLE render DROP COLUMN displayed'); }
原因说明
Laravel 5.2的default()方法属于ColumnDefinition类,而非Fluent类。报错本质是创建列的方法未返回正确的实例,多由依赖冲突、文件损坏或类名冲突导致。
内容的提问来源于stack exchange,提问作者José Victor
相关产品推荐
相关产品推荐

