1. 数据迁移
在Laravel中,我们使用数据库迁移来管理数据库表结构,迁移就像是数据库中的版本控制,它让团队成员之间能够轻松地修改跟共享应用程序的数据库结构,而不用担心并行更新数据结构而造成冲突问题。
总结下迁移的好处:
- 多人并行开发
- 代码版本管理
- 数据库版本控制:回滚/重置/更新等;
- 兼容多种数据库系统
- 部署方便
所有创建的迁移文件都被同意放在database/migrations
文件夹里。打开该文件夹我们可以看到,Laravel已默认为我们创建好了两个迁移文件:
database/migrations/2014_10_12_000000_create_users_table.php
database/migrations/2014_10_12_100000_create_password_resets_table.php
Laravel会在生成的文件名前面加上一个当前时间戳,用于知名该文件的创建时间。避免出现相同名字的迁移文件。
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->string('password', 60);
$table->rememberToken();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('users');
}
}
以上为create_users_table的代码:
在文件里面定义了一个CreateUsersTable类,并继承自
Migration基类。
CreatUsersTable有两个方法
up和
down:
up
* 当我们运行迁移时,方法会被调用。会通过调用
Schema类的
create方法来创建
users`表:
Schema::create('users',function(Blueprint $table){
...
});
**CreateUsersTable**类中通过**Blueprint**的实例`$table`为`users`表创建所需的数据字段。
```php
$table->increments('id');
···
由`increments`方法创建了一个`integer`类型的自增长id。
<div class="se-preview-section-delimiter"></div>
```php
$table->string('name');
- 当我们回滚迁移时,
down
方法会被调用
$table->string('name');
由string
方法创建了一个name
字段
$table->string('email')->unique();
创建了一个email
字段,且在最后指定该字段的值为唯一值
$table->string('password',60);
指定password
字段定义最大长度为60
$table->rememberToken();
由rememberToken
方法为用户创建一个remember_token
字段,用于保存【记住我】的相关信息
$table->timestamps();
由timestamps
方法创建了一个created_at
和一个·updated_at`字段,分别用于保存用户的创建爱你时间和更新时间。
最终该迁移文件生成的用户表字段信息如下所示:
字段名称 | 字段类型 |
---|---|
id | integer |
name | string |
string | |
password | string |
remember_token | string |
created_at | datetime |
updated_at | datetime |
* 当我们回滚迁移时,down
方法会被调用
down
方法会在回滚命令发起时被调用,时up
方法的逆向操作,通过Schema
的drop
方法来删除users
表
Schema::dropIfExists('users');
2. 查看数据表
- 数据库迁移
php artisan migrate
- 数据库回滚
php artisan migrate rollback
3. 模型文件
Laravel默认为我们生成的用户模型中包含了以下内容
Notifiable
是消息通知相关功能引用
Authenticatable
是授权相关功能的引用
table
指明要进行数据库交互的数据库名称
protected $table = 'users';
fillable
过滤用户提交的字段,只有包含在该属性中的字段才能被正常更新
protected $fillable = ['name', 'email', 'password'];
hidden
用户密码或者其他敏感信息在用户实例通过数组或json显示时进行隐藏
protected $hidden = ['password', 'remember_token'];
1.创建模型
- 直接创建模型
php artisan make:model Article
- 指定命名空间
php artisan make:model Models/Article
- 创建模型同时创建迁移文件
php artisan make:model Models/Article -m
4. 创建用户对象
- 进入Tinker环境
php artisan tinker
如果要退出 ctrl+c即可
1. 创建一个用户对象
>>> App\Models\User::create(['name'=> 'Aufree', 'email'=>'aufree@yousails.com','password'=>bcrypt('password')])
5. 查找用户对象
- 使用
use
来引用App\Models\User
Eloquent模型类
>>> use App\Models\User
注意:上面的 use 引用命令只会对当前会话有效,如果中途退出了 Tinker 的话,需要重新再执行一次上面的命令,才能继续使用 User 类名缩写。
- 查找记录
>>> User::find(1) //找主键为1 的记录
>>> User::findOrFail(5) //找主键为5的记录,找不到报错
>>> User::first() //找到第一条记录
>>> User::all() //找所有记录
>>> User
6. 更新用户对象
- 先修改再保存
>>> $user= User::first()
>>> $user->name = 'sumer'
>>> $user->save()
- 直接使用Update修改
>>> $user=User::first()
>>> $user->update(['name'=>'wangkun','email'=>'526369948@qq.com'])
>操作文件
mkdir app/Models //创建文件夹
mv app/User.php app/Models/User.php //移动文件
>git操作:移除更改:先全部添加,然后全部作废
```git
git add -A
git checkout -f