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. [RxJS] Combining Streams with CombineLatest

    Two streams often need to work together to produce the values you’ll need. This lesson shows how to ...

  2. with admin option 与with grant option

    在赋予user 权限或者role 时,常常会用到with admin option 和with grant option,而在使用中,可能会很容易出现混淆的情况,现把他们的相同点和不同点总结如下:相同 ...

  3. oracle SQL语句练习MERGE、模糊查询、排序、

    Oracle支持的SQL指令可分为数据操作语言语句.数据定义语言语句.事务控制语句.会话控制语句等几种类型:1.数据操作语言语句数据操作语言语句(Data manipulation language, ...

  4. iOS中如何获取image.xcassets中的启动图片

    /** *  获取启动图片 */ +(UIImage *)launchImage{ NSString *imageName=@"LaunchImage-700"; if(iphon ...

  5. c# 根据窗口截图,合并图片

    c# 根据窗口截图,合并图片 public class CaptureWindows { #region 类 /// <summary> /// Helper class containi ...

  6. Sql Server根据表名获得所有列及其属性

    select a.name columnname,c.name as typename,case when a.is_nullable =0 then 'Not Null' else 'Null' e ...

  7. php中的时区设置

    date_default_timezone_set('PRC'); 设置为中国时区

  8. DataTable 导出Excel 下载 (NPOI)

        public class ExcelHelper { public void DownLoadExcelNew(System.Data.DataTable data, Hashtable h, ...

  9. SpotMini末端控制策略

    相信很多人都注意到了“机器人学家”两天前推送的Boston Dynamics新机器人Spot-Mini.除了一如既往独领风骚的步态控制外,这次BD还给机器人增加了一个机械臂.视频中的一幕挺有趣,就是S ...

  10. FMDB官方使用文档-GCD的使用-提高性能(翻译)

    FMDB官方使用文档-GCD的使用-提高性能(翻译) 发布于:2013-08-19 10:01阅读数:13395 由于FMDB是建立在SQLite的之上的,所以你至少也该把这篇文章从头到尾读一遍.与此 ...