Laravel结构生成器

简介

Laravel 的 Schema 类提供了一种与数据库无关的方式维护表。它和 Laravel 所支持的所有数据库都能很好的工作,并且提供了统一的接口。

创建和删除表

使用 Schema::create 创建一个数据库的表:

Schema::create('users', function($table) { $table->increments('id'); });

传递给 create 函数的第一个参数是表的名字,第二个参数是一个闭包,将接受一个 Blueprint 对象用于定义新的表。

使用 rename 函数重命名一个已存在的表:

Schema::rename($from, $to);

使用 Schema::connection 函数指定结构操作所使用的数据库连接:

Schema::connection('foo')->create('users', function($table) { $table->increments('id'); });

使用 Schema::drop 函数删除一个表:

Schema::drop('users'); Schema::dropIfExists('users');

添加字段

使用 Schema::table 函数更新一个已存在的表:

Schema::table('users', function($table) { $table->string('email'); });

表生成器包含一系列的字段类型用于构建表:

命令描述
$table->bigIncrements('id');Incrementing ID using a "big integer" equivalent.
$table->bigInteger('votes');BIGINT equivalent to the table
$table->binary('data');BLOB equivalent to the table
$table->boolean('confirmed');BOOLEAN equivalent to the table
$table->date('created_at');DATE equivalent to the table
$table->dateTime('created_at');DATETIME equivalent to the table
$table->decimal('amount', 5, 2);DECIMAL equivalent with a precision and scale
$table->double('column', 15, 8);DOUBLE equivalent with precision
$table->enum('choices', array('foo', 'bar'));ENUM equivalent to the table
$table->float('amount');FLOAT equivalent to the table
$table->increments('id');Incrementing ID to the table (primary key).
$table->integer('votes');INTEGER equivalent to the table
$table->longText('description');LONGTEXT equivalent to the table
$table->mediumText('description');MEDIUMTEXT equivalent to the table
$table->morphs('taggable');Adds INTEGER taggable_id and STRING taggable_type
$table->smallInteger('votes');SMALLINT equivalent to the table
$table->softDeletes();Adds deleted_at column for soft deletes
$table->string('email');VARCHAR equivalent column
$table->string('name', 100);VARCHAR equivalent with a length
$table->text('description');TEXT equivalent to the table
$table->time('sunrise');TIME equivalent to the table
$table->timestamp('added_on');TIMESTAMP equivalent to the table
$table->timestamps();Adds created_at and updated_at columns
->nullable()Designate that the column allows NULL values
->default($value)Declare a default value for a column
->unsigned()Set INTEGER to UNSIGNED

如果你使用 MySQL 数据库,您可以使用 after 函数指明字段的顺序:

在 MySQL 中使用 After

$table->string('name')->after('email');

重命名字段

使用 renameColumn 函数重命名一个字段:

重命名一个字段

Schema::table('users', function($table) { $table->renameColumn('from', 'to'); });

注意: 不支持重命名 enum 字段类型.

删除字段

从表中删除一个字段

Schema::table('users', function($table) { $table->dropColumn('votes'); });

从表中删除多个字段

Schema::table('users', function($table) { $table->dropColumn('votes', 'avatar', 'location'); });

检查存在性

您可以使用 hasTable 和 hasColumn 检查一个表或一个字段是否存在:

检查表是否存在

if (Schema::hasTable('users')) {  // }

检查字段是否存在

if (Schema::hasColumn('users', 'email')) {  // }

添加索引

结构生成器支持多种类型的索引,有两种方法可以添加它们。首先,您可以在字段定义后链式的定义它们,或者独立的添加它们:

链式创建一个字段和索引

$table->string('email')->unique();

或者,您可以选择在不同的行添加索引。下面是全部支持的索引类型:

命令描述
$table->primary('id');添加一个主键
$table->primary(array('first', 'last'));添加组合键
$table->unique('email');添加唯一键
$table->index('state');添加一个索引

外键

Laravel 也支持向表中添加外键约束:

向表中添加外键

$table->foreign('user_id')->references('id')->on('users');

在这个例子中,我们指明 user_id 字段参照 users 表中的 id 字段。

您也可以指明 "on delete" 以及 "on update" 行为选项:

$table->foreign('user_id') ->references('id')->on('users') ->onDelete('cascade');

可以使用 dropForeign 函数删除一个外键。像其他索引一样,一个相似的命名惯例被使用于外键的命名:

$table->dropForeign('posts_user_id_foreign');

注意: 当创建一个参照递增整数类型的外键的时候,记得把外键字段的类型定义为无符号。

删除索引

为了删除索引,必须指明索引的名字。Laravel 默认为索引分配了一个合理的名字。通过连接表明、索引的字段名以及索引类型的形式。这里是一些例子:

命令描述
$table->dropPrimary('users_id_primary');从 "users" 表中删除一个主键
$table->dropUnique('users_email_unique');从 "users" 表中删除一个唯一键
$table->dropIndex('geo_state_index');从 "geo" 表中删除一个索引

存储引擎

通过在结构生成器设置 engine 属性为表设置存储引擎:

Schema::create('users', function($table) { $table->engine = 'InnoDB'; $table->string('email'); });

转载于:https://www.cnblogs.com/jjxhp/p/9193264.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Laravel 的目录结构如下: ``` laravel/ ├── app/ # 应用程序代码 │ ├── Console/ # Artisan 命令 │ ├── Exceptions/ # 应用程序异常处理器 │ ├── Http/ # HTTP 请求处理器 │ ├── Jobs/ # 队列任务 │ ├── Listeners/ # 事件监听器 │ ├── Policies/ # 授权策略 │ ├── Providers/ # 服务提供商 │ ├── Rules/ # 请求验证规则 │ ├── Services/ # 业务逻辑 │ ├── User.php # 用户模型 │ └── ... # 其它文件 ├── artisan # Artisan 命令行工具 ├── bootstrap/ # 应用程序启动脚本 ├── config/ # 配置文件 ├── database/ # 数据库相关文件 │ ├── factories/ # 数据工厂 │ ├── migrations/ # 数据库迁移 │ ├── seeds/ # 数据填充 │ └── ... ├── public/ # 公共文件,如 CSS、JS 和图片 │ ├── css/ │ ├── js/ │ ├── favicon.ico │ └── index.php # 入口文件 ├── resources/ # 视图、语言文件和原生资源文件 │ ├── lang/ # 多语言文件 │ ├── views/ # 视图文件 │ └── ... ├── routes/ # 路由文件 ├── storage/ # 存储文件 │ ├── app/ # 应用程序文件 │ ├── framework/ # 框架文件 │ ├── logs/ # 日志文件 │ └── ... ├── tests/ # 单元测试 ├── vendor/ # 第三方 Composer 包 ├── .env # 环境 ### 回答2: Laravel 是一种流行的 PHP 框架,其目录结构设计非常合理和组织严密,易于维护和理解。下面是 Laravel 的目录结构的简要介绍: 1. app 目录:这是 Laravel 应用程序的核心目录,包含了应用程序的模型(Models)、视图(Views)和控制器(Controllers)。这里还包含了异常处理、中间件、事件、日志等功能的代码。 2. bootstrap 目录:该目录包含了 Laravel 框架的启动和引导代码,其中包含了自动载入机制和环境配置。 3. config 目录:该目录包含了应用程序的配置文件,可以在这里设置数据库连接、应用程序的环境变量和其他配置选项。 4. database 目录:该目录包含了数据库迁移文件和数据填充文件,可以通过迁移文件来创建和修改数据库结构,并使用填充文件填充一些初始数据。 5. public 目录:该目录是应用程序的根目录,其中包含了前端资源文件(如 JavaScript、CSS 和图片等),以及一个入口文件 index.php。 6. resources 目录:该目录包含了应用程序的资源文件,包括视图模板文件、原始的 Sass、Less、JavaScript 源码文件等。 7. routes 目录:该目录包含了应用程序的路由文件,可以定义应用程序的路由规则。 8. storage 目录:该目录用于存储一些生成的文件,如日志文件、缓存文件、会话文件等。 9. tests 目录:该目录用于存放应用程序的测试案例。 10. vendor 目录:该目录包含了 Composer 打包工具下载和管理的第三方依赖库。 这些目录组织良好,分别用于存放不同的文件和代码,使得 Laravel 的项目结构非常清晰和灵活,有助于提高开发效率和代码的可维护性。 ### 回答3: Laravel是一个流行的PHP框架,其目录结构非常清晰和有组织性,方便开发人员管理和维护项目。以下是Laravel的目录结构解释: 1. app目录:这个目录是存放应用程序的核心代码的地方。包括控制器、模型以及其他自定义类。这是你写业务逻辑的地方。 2. bootstrap目录:这个目录包含了自动加载和启动应用程序所需的一些文件。例如,启动框架、配置加载和异常处理。 3. config目录:这个目录包含了应用程序的所有配置文件。你可以在这里设置数据库连接、邮件配置、缓存驱动等等。 4. database目录:这个目录包含了数据库迁移文件和数据填充器。你可以在这里管理和更新数据库结构,以及初始化一些测试数据。 5. public目录:这个目录是应用程序的入口点,也是Web服务器公开访问的唯一目录。你可以在这里放置静态资源,例如CSS、JavaScript和图像文件。 6. resources目录:这个目录包含了应用程序所需的视图文件、语言文件和其他资源文件。你可以在这里定义布局、页面模板和语言翻译。 7. routes目录:这个目录包含了应用程序的所有路由文件。你可以在这里定义URL和对应的控制器方法,处理用户的请求。 8. storage目录:这个目录包含了应用程序的日志文件、缓存文件和上传的文件。你可以在这里存储应用程序运行过程中的各种数据。 9. tests目录:这个目录包含了应用程序的单元测试和功能测试。你可以在这里编写和运行测试,以确保应用程序的正确性。 总的来说,Laravel的目录结构非常有组织性,使开发人员可以快速找到所需的文件,并进行相关的修改和维护。这种结构也方便团队合作和项目的可维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值