正文
[转]Laravel 4之数据库操作
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
Laravel 4之数据库操作
http://dingjiannan.com/2013/laravel-database/
数据库配置
Laravel数据库配置在app/config/database.php
中进行,其中
'fetch'=> PDO::FETCH_CLASS,
设置数据返回格式,默认以类放回,你以$book->name
形式访问数据。如果设置成PDO::FETCH_ASSOC
,则以数组形式返回$book['name']
。
'default'=>'mysql',
指定数据库连接,在下面的connections
中配置你需要的数据库。你也可以创建你自己的多个数据库连接。
'connections'=> array(
......
'mysql'=> array(
'driver'=>'mysql',
'host'=>'localhost',
'database'=>'database',
'username'=>'root',
'password'=>'',
'charset'=>'utf8',
'collation'=>'utf8_unicode_ci',
'prefix'=>'',
),
......
),
Schema结构生成器创建表
Schema::create('users',function($table)
{
$table->increments('id');
$table->string('username',32);
});
Schema::create('users',function($table)
{
$table->increments('id');
$table->string('username',32);
});
创建了一张users
表,包含俩个字段。关于其他类型的字段参考官方手册。
字段修饰
$table->string('username');
$table->unique('username');
//链式
$table->string('username')->unique();
其他修饰还包括
$table->string('name')->nullable();
$table->string('name')->default('John Doe');
$table->integer('age')->unsigned();
$table->integer('age')->index();
$table->string('username')->primary();
为多个字段添加修饰
$table->index(array('age','weight'));
更新表
重命名表
Schema::rename('users','idiots');
Schema::table()
更新表,添加字段
Schema::table('example',function($table)
{
$table->string('name');
$table->string('name')->after('email');
});
删除字段
$table->dropColumn('name');
$table->dropColumn(array('name','age'));
$table->dropColumn('name','age');
重命名字段
$table->renameColumn('name','nickname');
删除修饰
$table->dropPrimary(array('name','email'));
$table->dropUnique('example_name_unique');
$table->dropIndex('example_name_index');
删除表
Schema::drop('example');
Schema::dropIfExists('example');
指定数据库连接
Schema::connection('mysql')->create('example',function($table)
{
$table->increments('id');
});
检查存在性
Schema::hasTable('author')
Schema::hasColumn('example','id')
设置存储引擎
$table->engine ='InnoDB';
Migrations
Migrations是一种数据库版本控制工具,其当前数据库保持最新或是返回到过去的某个版本。
创建Migrations
使用 Artisan 命令行的migrate:make
命令创建一个Migrations
$ php artisan migrate:make create_users
CreatedMigration:2013_06_30_124846_create_users
Generating optimized class loader
Compiling common classes
会创建一个PHP文件在app/database/migrations/2013_06_30_124846_create_users.php
,里面包含两个默认函数up()
和down()
.然后我们可以在里面创建表或是删除表
publicfunction up()
{
Schema::create('users',function($table)
{
$table->increments('id');
$table->string('name',128);
$table->string('email');
$table->string('password',60);
$table->timestamps();
});
}
publicfunction down()
{
Schema::drop('users');
}
我们也可以让migrate
为我们自动创建表样式
$ php artisan migrate:make create_users --create --table=users
还可以使用--path=app/migs
选项指定路径
运行Migrations
Laravel会自动安装Migrations,你也可以手动安装Migrations
$ php artisan migrate:install
运行Migrations
$ php artisan migrate
Migration table created successfully.
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
pdo_mysql.default_socket=/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
运行某路径下的Migrations
$ php artisan migrate --path=app/migs
运行某个包下的所有迁移
$ php artisan migrate --package=vendor/package
回滚Migrations
回滚最后一次迁移
$ php artisan migrate:rollback
回滚所有迁移
$ php artisan migrate:reset
回滚所有迁移并重新运行所有迁移
$ php artisan migrate:refresh
$ php artisan migrate:refresh --seed
结束
点击查看评论