Laravel 4之数据库操作

数据库配置

Laravel数据库配置在app/config/database.php中进行,其中

  1. 'fetch'=> PDO::FETCH_CLASS,

设置数据返回格式,默认以类放回,你以$book->name形式访问数据。如果设置成PDO::FETCH_ASSOC,则以数组形式返回$book['name']

  1. 'default'=>'mysql',

指定数据库连接,在下面的connections中配置你需要的数据库。你也可以创建你自己的多个数据库连接。

  1. 'connections'=> array(
  2. ......
  3. 'mysql'=> array(
  4. 'driver'=>'mysql',
  5. 'host'=>'localhost',
  6. 'database'=>'database',
  7. 'username'=>'root',
  8. 'password'=>'',
  9. 'charset'=>'utf8',
  10. 'collation'=>'utf8_unicode_ci',
  11. 'prefix'=>'',
  12. ),
  13. ......
  14. ),

Schema结构生成器

创建表

  1. Schema::create('users',function($table)
  2. {
  3. $table->increments('id');
  4. $table->string('username',32);
  5. });

创建了一张users表,包含俩个字段。关于其他类型的字段参考官方手册。

字段修饰

  1. $table->string('username');
  2. $table->unique('username');
  3. //链式
  4. $table->string('username')->unique();

其他修饰还包括

  1. $table->string('name')->nullable();
  2. $table->string('name')->default('John Doe');
  3. $table->integer('age')->unsigned();
  4. $table->integer('age')->index();
  5. $table->string('username')->primary();

为多个字段添加修饰

  1. $table->index(array('age','weight'));

更新表

重命名表

  1. Schema::rename('users','idiots');

Schema::table()更新表,添加字段

  1. Schema::table('example',function($table)
  2. {
  3. $table->string('name');
  4. $table->string('name')->after('email');
  5. });

删除字段

  1. $table->dropColumn('name');
  2. $table->dropColumn(array('name','age'));
  3. $table->dropColumn('name','age');

重命名字段

  1. $table->renameColumn('name','nickname');

删除修饰

  1. $table->dropPrimary(array('name','email'));
  2. $table->dropUnique('example_name_unique');
  3. $table->dropIndex('example_name_index');

删除表

  1. Schema::drop('example');
  2. Schema::dropIfExists('example');

指定数据库连接

  1. Schema::connection('mysql')->create('example',function($table)
  2. {
  3. $table->increments('id');
  4. });

检查存在性

  1. Schema::hasTable('author')
  2. Schema::hasColumn('example','id')

设置存储引擎

  1. $table->engine ='InnoDB';

Migrations

Migrations是一种数据库版本控制工具,其当前数据库保持最新或是返回到过去的某个版本。

创建Migrations

使用 Artisan 命令行的migrate:make命令创建一个Migrations

  1. $ php artisan migrate:make create_users
  2. CreatedMigration:2013_06_30_124846_create_users
  3. Generating optimized class loader
  4. Compiling common classes

会创建一个PHP文件在app/database/migrations/2013_06_30_124846_create_users.php,里面包含两个默认函数up()down().然后我们可以在里面创建表或是删除表

  1. publicfunction up()
  2. {
  3. Schema::create('users',function($table)
  4. {
  5. $table->increments('id');
  6. $table->string('name',128);
  7. $table->string('email');
  8. $table->string('password',60);
  9. $table->timestamps();
  10. });
  11. }
  12. publicfunction down()
  13. {
  14. Schema::drop('users');
  15. }

我们也可以让migrate为我们自动创建表样式

  1. $ php artisan migrate:make create_users --create --table=users

还可以使用--path=app/migs选项指定路径

运行Migrations

Laravel会自动安装Migrations,你也可以手动安装Migrations

  1. $ php artisan migrate:install

运行Migrations

  1. $ php artisan migrate
  2. Migration table created successfully.
  3. Migrated:2013_08_20_044917_create_users

运行时有可能出现[PDOException] SQLSTATE[HY000] [2002] No such file or director错误,那是因为你的mysql.sock设置不正确。还有就是命令行的PHP是系统默认的PHP而不是XAMPP中的PHP,因此你需要修改系统默认的php.ini文件,找到并修改pdo_mysql.default_socket

  1. pdo_mysql.default_socket=/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock

运行某路径下的Migrations

  1. $ php artisan migrate --path=app/migs

运行某个包下的所有迁移

  1. $ php artisan migrate --package=vendor/package

回滚Migrations

回滚最后一次迁移

  1. $ php artisan migrate:rollback

回滚所有迁移

  1. $ php artisan migrate:reset

回滚所有迁移并重新运行所有迁移

  1. $ php artisan migrate:refresh
  2. $ php artisan migrate:refresh --seed

结束

[转]Laravel 4之数据库操作的更多相关文章

  1. [Laravel] Laravel的基本数据库操作部分

    [laravel] laravel的数据库配置 找到程序目录结构下.env文件 配置基本的数据库连接信息 DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=blog ...

  2. laravel中的数据库操作(增删改查)方法一

    导入命名空间和DBnamespace App\Http\Controllers; use Illuminate\Support\Facades\DB; public function index(){ ...

  3. laravel框架总结(七) -- 数据库操作

      1.使用DB门面进行基本操作 一旦你设置好了数据库连接,就可以使用 DB facade 来进行查找.DB facade 提供每个类型的查找方法:select.update.insert.delet ...

  4. laravel 数据库操作

    1 配置信息 1.1配置目录: config/database.php 1.2配置多个数据库 //默认的数据库 'mysql' => [ 'driver' => 'mysql', 'hos ...

  5. laravel基础课程---13、数据库基本操作2(lavarel数据库操作和tp对比)

    laravel基础课程---13.数据库基本操作2(lavarel数据库操作和tp对比) 一.总结 一句话总结: 非常非常接近:也是分为两大类,原生SQL 和 数据库链式操作 学习方法:使用时 多看手 ...

  6. laravel 连接同一服务器上多个数据库操作 、 连接多个不同服务器上的不同数据库操作以及多个数据库操作的事务处理

    !注意:标红的要注意区分开 第一步.配置.env文件(同一服务器上多个数据库) DB_CONNECTION=pgsqlDB_HOST=IP(例如:127.0.0.1)DB_PORT=端口号(例如:54 ...

  7. Laravel—数据库操作与Eloquent模型使用总结

    数据库操作 执行原生SQL //查询 $emp = DB::select('select * from employees where emp_no = 1'); $emp = DB::select( ...

  8. PHP数据库操作:使用ORM

    之前我发了一篇博文PHP数据库操作:从MySQL原生API到PDO,向大家展示PHP是如何使用MySQL原生API.MySQLi面向过程.MySQLi面向对象.PDO操作MySQL数据库的.本文介绍如 ...

  9. Laravel 5.2数据库--多个关联关系,带条件约束的渴求式加载的问题

    ### 今天在连表获取数据的时候,老是获取不到想要的,确实有点无力适从的感觉. 归根到底,还是对laravel不够熟悉,至少是数据库操作那块. ### 问题是这样的: 我想要通过连表中间表,拿中间表的 ...

随机推荐

  1. CATransform3D中m34字段的取值含义

    转载自:http://zhidao.baidu.com/link?url=OlVQoGOKIBmaXKgQisOLtzliTLPvreOOsRmny3yebA1Wb6-B3KtuKlRXmv0tO3y ...

  2. Windows消息机制(转)1

    Windows的应用程序一般包含窗口(Window),它主要为用户提供一种可视化的交互方式,窗口是总是在某个线程(Thread)内创建的.Windows系统通过消息机制来管理交互,消息(Message ...

  3. Java ------------获取不会重复的随机数

    import java.util.UUID; public class UTest {    public static void main(String[] args) { //UUID通过rand ...

  4. "客户端无法连接到远程计算机"错误的解决方法

    问题: 客户端无法连接到远程计算机. 可能没有启用远程连接或者计算机太忙不能接受新的连接. 也可能是网络问题阻止连接.请稍后重新尝试连接. 如果问题仍然存在 请与管理员联系. 解决方法: 1.首先确认 ...

  5. JS文件中加载jquery.js

    原文链接:http://blog.csdn.net/whatday/article/details/39553451 最近有一个需求: 1.在一个html中只能引入一个JS文件 不能有JS代码和其他J ...

  6. 探索A@1db9742

    public class S { /**   * @param args   */ public static void main(String[] args) { System.out.printl ...

  7. 简单的LRU Cache设计与实现

    要求: 设计并实现一个LRU缓存的数据结构,支持get和set操作 get(key):若缓存中存在key,返回对应的value,否则返回-1 set(key,value):若缓存中存在key,替换其v ...

  8. deflate树与deflate编码

    关于deflate树,能搜到的资料非常少,这个概念来自gzip的压缩算法,是由huffman树转变过来的.这里简单记录下deflate树的生成过程以及deflate编码. 假设以5 8 9 10 14 ...

  9. HDU 4612 (13年多校第二场1002)无向图缩点,有重边

    这道题是多校的题,比赛的时候是一道纷纷水过的板刷题. 题意:给你一些无向边,只加一条边,使该图的桥最少,然后输出最少的桥. 思路:当时大致想到思路了,就是缩点之后找出最长的链,然后用总的桥数减去链上的 ...

  10. CSS实现背景透明/半透明效果的方法

    全透明代码:{background:transparent} 半透明代码:{filter:alpha(opacity=80);-moz-opacity:0.8;width:auto !importan ...