laravel 数据库操作(表、字段)
1)创建表(make:migration create),例如创建 articles
php artisan make:migration create_articles_table
运行命令后,会在 /database/migrations/ 生成对应的数据库迁移文件,通过修改文件里的 up 方法 和 down 文件,来创建数据表和删除数据表
public function up() {Schema::create('articles', function (Blueprint $table) {$table->increments('id');$table->string('title',50);$table->longText('content');$table->timestamps();}); }
public function down() {Schema::drop('articles'); }
运行 php artisan migrate 命令后,即可生效
PS:cretae 创建表时,字段要想得完善一些,后期不能修改这个文件了(修改或删除字段,需要新建一个数据库迁移文件,下面说)
详情的字段类型和操作,看这里 http://laravelacademy.org/post/6171.html#ipt_kb_toc_6171_8
命令 | 描述 |
---|---|
$table->bigIncrements('id');
|
自增ID,类型为bigint |
$table->bigInteger('votes');
|
等同于数据库中的BIGINT类型 |
$table->binary('data');
|
等同于数据库中的BLOB类型 |
$table->boolean('confirmed');
|
等同于数据库中的BOOLEAN类型 |
$table->char('name', 4);
|
等同于数据库中的CHAR类型 |
$table->date('created_at');
|
等同于数据库中的DATE类型 |
$table->dateTime('created_at');
|
等同于数据库中的DATETIME类型 |
$table->dateTimeTz('created_at');
|
等同于数据库中的DATETIME类型(带时区) |
$table->decimal('amount', 5, 2);
|
等同于数据库中的DECIMAL类型,带一个精度和范围 |
$table->double('column', 15, 8);
|
等同于数据库中的DOUBLE类型,带精度, 总共15位数字,小数点后8位. |
$table->enum('choices', ['foo', 'bar']);
|
等同于数据库中的 ENUM类型 |
$table->float('amount');
|
等同于数据库中的 FLOAT 类型 |
$table->increments('id');
|
数据库主键自增ID |
$table->integer('votes');
|
等同于数据库中的 INTEGER 类型 |
$table->ipAddress('visitor');
|
等同于数据库中的 IP 地址 |
$table->json('options');
|
等同于数据库中的 JSON 类型 |
$table->jsonb('options');
|
等同于数据库中的 JSONB 类型 |
$table->longText('description');
|
等同于数据库中的 LONGTEXT 类型 |
$table->macAddress('device');
|
等同于数据库中的 MAC 地址 |
$table->mediumIncrements('id');
|
自增ID,类型为无符号的mediumint |
$table->mediumInteger('numbers');
|
等同于数据库中的 MEDIUMINT类型 |
$table->mediumText('description');
|
等同于数据库中的 MEDIUMTEXT类型 |
$table->morphs('taggable');
|
添加一个 INTEGER类型的 taggable_id 列和一个 STRING类型的 taggable_type 列
|
$table->nullableTimestamps();
|
和 timestamps() 一样但允许 NULL值.
|
$table->rememberToken();
|
添加一个 remember_token 列: VARCHAR(100) NULL.
|
$table->smallIncrements('id');
|
自增ID,类型为无符号的smallint |
$table->smallInteger('votes');
|
等同于数据库中的 SMALLINT 类型 |
$table->softDeletes();
|
新增一个 deleted_at 列 用于软删除.
|
$table->string('email');
|
等同于数据库中的 VARCHAR 列 . |
$table->string('name', 100);
|
等同于数据库中的 VARCHAR,带一个长度 |
$table->text('description');
|
等同于数据库中的 TEXT 类型 |
$table->time('sunrise');
|
等同于数据库中的 TIME类型 |
$table->timeTz('sunrise');
|
等同于数据库中的 TIME 类型(带时区) |
$table->tinyInteger('numbers');
|
等同于数据库中的 TINYINT 类型 |
$table->timestamp('added_on');
|
等同于数据库中的 TIMESTAMP 类型 |
$table->timestampTz('added_on');
|
等同于数据库中的 TIMESTAMP 类型(带时区) |
$table->timestamps();
|
添加 created_at 和 updated_at 列
|
$table->timestampsTz();
|
添加 created_at 和 updated_at 列(带时区)
|
$table->unsignedBigInteger('votes');
|
等同于数据库中无符号的 BIGINT 类型 |
$table->unsignedInteger('votes');
|
等同于数据库中无符号的 INT 类型 |
$table->unsignedMediumInteger('votes');
|
等同于数据库中无符号的 MEDIUMINT 类型 |
$table->unsignedSmallInteger('votes');
|
等同于数据库中无符号的 SMALLINT 类型 |
$table->unsignedTinyInteger('votes');
|
等同于数据库中无符号的 TINYINT 类型 |
$table->uuid('id');
|
等同于数据库的UUID |
非空、默认值等修改操作看这里 http://laravelacademy.org/post/6171.html#ipt_kb_toc_6171_10
修改器 | 描述 |
---|---|
->after('column')
|
将该列置于另一个列之后 (仅适用于MySQL) |
->comment('my comment')
|
添加注释信息 |
->default($value)
|
指定列的默认值 |
->first()
|
将该列置为表中第一个列 (仅适用于MySQL) |
->nullable()
|
允许该列的值为NULL |
->storedAs($expression)
|
创建一个存储生成列(只支持MySQL) |
->unsigned()
|
设置 integer 列为 UNSIGNED
|
->virtualAs($expression)
|
创建一个虚拟生成列(只支持MySQL) |
2)修改已创建的数据表字段(make:migration add)
想要修改已创建的数据表,不能直接改原来的 migrate 文件,要新建一个迁移文件,命令如下:
php artisan make:migration add_description_to_articles_table --table=articles
php artisan make:migration change_description_on_articles_table --table=articles
PS:其实migrate 文件的名字是怎么的都无所谓的,主要是里面的内容,不过名字都是要尽量写规范一点,让别人看到名字就知道是什么意思
添加或修改字段的操作是非常相似的,后者只是多了一个change()方法
新增字段:
public function up() {Schema::table('articles', function (Blueprint $table) {$table->string('description')->nullable()->after('title');}); }public function down() {Schema::table('articles', function (Blueprint $table) {$table->dropColumn('description');}); }
修改字段:
public function up() {Schema::table('articles', function (Blueprint $table) {$table->string('description', 200)->change();}); }public function down() {Schema::table('articles', function (Blueprint $table) {// }); }
运行 php artisan migrate 命令后,即可生效
3)使用索引
可用索引类型:
命令 | 描述 |
---|---|
$table->primary('id');
|
添加主键索引 |
$table->primary(['first', 'last']);
|
添加混合索引 |
$table->unique('email');
|
添加唯一索引 |
$table->unique('state', 'my_index_name');
|
指定自定义索引名称,如果不指定,laravel会自动给它起个名字 |
$table->index('state');
|
添加普通索引 |
删除索引:
命令 | 描述 |
---|---|
$table->dropPrimary('users_id_primary');
|
从 “users”表中删除主键索引 |
$table->dropUnique('users_email_unique');
|
从 “users”表中删除唯一索引 |
$table->dropIndex('geo_state_index');
|
从 “geo”表中删除普通索引 |
外键约束(references...on...):
Schema::table('posts', function ($table) {$table->integer('user_id')->unsigned();$table->foreign('user_id')->references('id')->on('users'); });
删除外键索引:
$table->dropForeign('user_id');
更详细的文档看这里:http://laravelacademy.org/post/6171.html
转载于:https://www.cnblogs.com/tujia/p/6279287.html
laravel 数据库操作(表、字段)相关推荐
- oracle删除表的一个字段的数据库,学会Oracle数据库删除表字段和Oracle数据库表增加字段方法...
Oracle数据库添加字段的语法:alter table tablename add (column datatype [default value][null/not null],-.); Ora ...
- laravel mysql sum,Laravel 数据库操作
mysql DB 运行原始语句 select 查找 // 参数绑定 $users = DB::select('select * from users where active = ?', [1]); ...
- laravel数据库操作
原生方法 Db::select('select * from users where active = ?',[1]);//查询,第一个参数原生语句第二个参数where条件 Db::insert('i ...
- mysql清空字段 1_mysql数据库 清空表 字段 1
1,查看数据库状态 及启动停止 /etc/init.d/mysqld status/etc/init.d/mysqld start/etc/init.d/mysqld stop 2,给用户配置初始密码 ...
- 达梦数据库查看表字段VARCHAR类型的长度单位是BYTE还是CHAR
描述 默认情况下,LENGTH_IN_CHAR为0(默认),VARCHAR类型长度单位为字节:LENGTH_IN_CHAR为1,VARCHAR类型长度单位为字符.可以通过v p a r a m ...
- oracle数据库删除表字段的SQL语句
数据库删除字段的SQL语句 : alter table 表名 drop (column) 例如: alter table tableName drop (name)
- WordPress数据库文章表(字段说明)
在数据库中文章表数据表为:wp_posts 表字段如下: ID(文章ID) post_author(文章作者名,我想可以是为用户名,也可以是用户ID) post_date(文章发布日期) post_d ...
- Microsoft Access 数据库和表
文章目录 创建数据库 创建表 字段 数据类型 字段属性 输入掩码 格式 表与表的关系 创建数据库 数据库为单个文件:DatabaseName.accdb 创建表 设计视图创建表 创建->表设计: ...
- 数据库和表的基本操作
2019-10-4数据库和表的基本操作 数据库->数据表->字段 一.数据库和表的基本操作 1.创建和查看数据库 ①创建数据库 CREATE DATABASE 数据库名称; 实例:创建一个 ...
最新文章
- MySQL探秘(七):InnoDB行锁算法
- 关于bind1st和bind2nd
- Django Rest Framework源码剖析(二)-----权限
- Angular set函数和Component属性的命名冲突问题
- css正則匹配、模糊匹配
- 如何修改博客园里个人首页背景(form:cot 大犇)
- jquery之父john resig见面会及jquery最新动态
- 思科为计算机配置ip命令,使用CLI在交换机上配置IP地址设置
- mysql unzip下载_zip unzip 命令
- java事务_Java 事务详解
- 怎么做网站,网站制作步骤有哪些?
- 洛谷P3369(范浩强Treap)知识回顾+视频讲解
- html模糊遮罩层磨砂玻璃,常见的PPT背景:如何设计PPT背景?
- od 查找特征码和特征码模糊搜索教程
- Linux编程基础期末冲刺——第3章用户组与用户组管理
- 关于创建String对象的抉择
- CSDN博客如何更换皮肤
- 复旦大学附属肿瘤医院请“牛顿”打造智慧医疗
- Primo Ramdisk配置教程
- 常用加密与解密算法示例代码
热门文章
- NLP《词汇表示方法(四)负采样》
- kettle时间维度_MySQL快速生成时间维度表
- 调用gensim库训练word2vec词向量
- 计算机网络 —— 计算机网络的性能指标
- cs224 -Lecture 1:Introduction and Word Vectors
- Origin绘制双Y或双X折线图(不同坐标)
- 数字图像处理--彩色图像转灰度图像
- 小程序 - 腾讯云 - wafer - PHP - 数据库接口的应用和研究 - 01 - DB::insert
- [gstreamer][001] Seek issues and so on
- 用友服务器显示禁用,包头用友 U6 运行时提示端口4630 被禁用 或者 1433端口不通...