我正在尝试在一个迁移文件中迁移特定行。
例:
之前:
Schema::create('categories', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('category_name');
$table->integer('parent_id')->nullable();
$table->timestamps();
});
后:
Schema::create('categories', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('category_name');
$table->string('img_url'); // ← new column
$table->integer('parent_id')->nullable();
$table->timestamps();
});
现在我只想迁移该行:$table->string('img_url');
可能吗?
参考方案
听起来您正在尝试向已通过迁移创建的表中添加一列。在这种情况下,您需要使用Schema::create(...)
而不是使用Schema::table(...)
。
通常,您将为此创建一个新的迁移:
$ php artisan make:migration add_img_url_to_categories
它将在/database/migrations
创建一个名为2019_10_21_165554_add_img_url_to_categories.php
之类的新文件。然后将此代码添加到up()
函数中:
public function up()
{
Schema::table('categories', function (Blueprint $table) {
$table->string('img_url');
});
}
您还有另一个选择是完全按照您的要求编辑迁移(根据问题中的代码),然后运行:
$ php artisan migrate:fresh // drop all tables and re-run all migrations
要么
$ php artisan migrate:refresh // reset and re-run all migrations
但是请记住,这些都是破坏性操作,这意味着您将丢失数据库中已有的所有数据。在早期开发中,这可能并不重要。但是,您应该真正养成为数据库更改创建新迁移的习惯,而不是编辑现有迁移。
迁移的目的是使您(或使用您的应用程序的任何人)可以快速部署与您的应用程序期望的模式匹配的数据库。
在开发期间,在调整数据库架构以适应要开发的功能时,通常会编辑迁移。
但是,一旦部署或发布了应用程序,则应将所有迁移视为已锁定或只读。从那时起,任何数据库更改都应在新的迁移中完成。
PHP Laravel从另一个驱动器读取文件 - php我目前正在学习Laravel。我想知道是否有一种方法可以在Laravel中使用Storage::从另一个硬盘访问文件(使用Windows)。例如,我在驱动器C:上安装了带有Laravel的Xampp,但是我想访问网站目录之外的E:上的文件。我试过使用Storage::files('E:')和File::files('E:…
Laravel 5排序具有关系的雄辩模型 - php我有一个要基于关系属性进行排序的模型。主模型Resultado具有类型respondente的关系belongsTo,而respondente具有关系usuario。我想获取具有这些关系的Resultado并按usuario name属性(列)对结果进行排序。我试过了$resultados = Diagnostico\Resultado::with(…
Laravel Nova自指关系 - php在Laravel中,如果要创建自引用关系,可以执行以下操作:class Post extends Eloquent { public function parent() { return $this->belongsTo('Post', 'parent_id'); } public function childr…
检查对象是否已在集合中-Laravel - php当我循环一系列不同的结果时,我希望将对象添加到新集合中。查询:$osRed = Item::where('category', 'Hardware') ->where(function ($query) { $query->where('operating_system', '…
Laravel @yield在刀片视图引擎的html标签中 - php这可能吗?<html @yield( 'AngularNamespace' )> </html> 显然以上方法不起作用... 参考方案 这个对我有用。只要您的其他模板文件具有@section('AngularNamespace', 'NameSpaceHere')