Laravel框架05:模型和自动验证
- 一、模型(AR模式)概述
- 二、定义模型
- 三、调用模型
- 四、基本操作
- 1. 添加数据
- ① AR模式
- ② Request
- 2. 查询数据
- 3. 修改操作
- ① AR模式
- ② update
- 4. 删除操作
- 五、控制器验证
- 1. 基本语法
- 2. 输出错误信息
一、模型(AR模式)概述
- Laravel自带的 Eloquent ORM 提供了一个美观、简单的与数据库打交道的ActiveRecord实现。
- 每张数据表都对应一个与该表进行交互的 ”Model“ 模型,允许在模型中对表中的数据进行CURD操作。
- AR模式三个核心(映射关系):
- 每个数据表:与数据表进行交互的Model模型(实例化模型)
- 记录中的字段:与模型类的属性(给属性赋值)
- 表中的每个记录:与一个完整的请求实例(具体的CURD操作)
二、定义模型
- 默认定义在app目录下,建议分目录管理。
- 命名规则:表名(首字母大写).php
- 创建模型:
php .\artisan make:model Home/Member
- 注意事项:
- 必做:定义一个
$table
属性,值是不要前缀的表名。(如果不指定则使用类名的复数形式) - 定义
$primaryKey
属性,如果需要使用AR模式的find(Model::find(n)
)方法,且主键字段不是id则需要指定主键。 - 定义
$timestamps
属性,值设置为false。如果不设置,默认会操作表中的created_at和updated_at字段。 - 定义
$fillable
属性,表示使用模型插入数据时,允许插入到数据库的字段信息。定义$guarded
设置排除入库字段。
class Member extends Model { protected $table = 'member'; protected $primaryKey = "id"; public $timestamps = false; protected $fillable = ["id", "name", "age", "email"]; }
- 必做:定义一个
三、调用模型
- 引入 Member 模型类:
use App\Home\Member;
- 使用方式:
- 以调用静态方法为主的形式,该形式下模型不需要实例化。
Member::get()
- 实例化模型,再去使用。
$model = new Member(); $model->get();
- 以调用静态方法为主的形式,该形式下模型不需要实例化。
四、基本操作
1. 添加数据
① AR模式
- AR模式必须要实例化模型
- 然后为模型设置属性,最后调用
save()
即可。
$member = new Member();
$member->name = "Lisa";
$member->age = 15;
$result = $member->save();
dd($result); // boolean
② Request
- 引入 Request
public function test8(Request $request) {
...
}
# 获取所有参数
$request->all();
# 获取某个参数
$request->get('name');
# 只获取某些参数
$request->only(['name', 'age']);
# 不获取某些参数
$request->except(['name', 'age']);
- 添加数据
public function test8(Request $request) {
$member = new Member();
$result = $member->create($request->all());
}
- 如果使用 create 方法,则需要在模型中定义 fillable 属性,允许写入字段的定义,如果没有时间相关字段也需要禁止时间自动更新功能。
2. 查询数据
- 获取指定主键的一条数据
$data = Member::find(5);
结果集默认是一个对象。如果要将结果集转换为数组,则需要在最终添加框架自己封装的方法toArray()
public function test9() {
$data = Member::find(5)->toArray();
dd($data);
}
- 查询符合指定条件的第一条记录。
$data = Member::where("id", ">", 5)->first();
- 查询多行并且指定字段
- select()->get():按条件查询多个字段。
- all() :功能和上面一样。但不支持链式操作,比如排序、分组。
$data = Member::where("id", ">", 5)->select(["name", "age"])->get()->toArray();
3. 修改操作
① AR模式
- 如果要更新数据,需要先调用
find()
返回一个模型对象,然后再为对象更新数据。
public function test10() {
$data = Member::find(7);
$data->email = "admin@itcast.cn";
$data->save();
}
② update
Member::where("id", "8")->update([
"age" => 80
]);
4. 删除操作
$data = Member::find(10);
$data->delete();
五、控制器验证
- 建议去查看手册
1. 基本语法
validate
方法用于验证接收的数据。如果验证通过,代码继续执行。验证失败,则抛出异常。在传统的HTTP请求中,验证失败会生成一个重定向响应。- 多个规则使用
|
隔开
$this->validate($request, [
"name" => "required|unique:member|max:16",
"age" => "required|integer|min:1|max:120",
"email" => "required|email"
]);
2. 输出错误信息
- 每次请求的所有视图中都存在一个
$errors
变量。
foreach ($errors->all() as $error){
echo $error;
}
- 如果需要切换提示文字,需要使用中文语言包的支持。在composer代码托管网站中下载 laravel-lang。
composer require caouecs/laravel-lang
- 使用
语言包文件在 vendor/caouecs/laravel-lang/src 中,将语言目录复制到 resources/lang 目录下。在 config/app.php 中修改 locale 的值。