Laravel模型
AR模式三个核心(映射):
- 每个数据表 ----- 与数据表进行交互的Model模型映射(实例化模型)
- 记录中的字段 ----- 与模型类的属性映射(给属性赋值)
- 表中的每个记录 ----- 与一个完整的请求实例映射(具体的CURD操作)
定义模型
模型位置
位于:app/
命名规则
- 首字母大写的表名
创建模型
php artisan make:model 模型名
模型限制
- 定义表名,模型所对应的默认表名是模型类名复数形式,如果表名不统一则需要指定一下
- 指定主键名,默认主键是ID,若自定义主键名称不是ID,则需要指定一下
- 指定时间戳,模型操作会认为在你数据库表中有created_at和update_at字段。如果你不希望让模型来自动维护这两个字段,可在模型内将$timestamps = false;
- 批量赋值,当通过 create 方法来保存数据时,你需要先在你的模型上定义$fillable或$guarded属性
在控制器中使用模型
- 需要引入此模型,也可以使用别名。
创建模型
<?php
namespace App\sql_6;
use Illuminate\Database\Eloquent\Model;
class Info extends Model
{
// 定义表名,模型所对应的默认表名是模型类名复数形式,如果表名不统一则需要指定一下
protected $table = 'info';
// 指定主键名,默认主键是ID,若自定义主键名称不是ID,则需要指定一下
protected $primaryKey = 'id';
// 指定时间戳,模型操作会认为在你数据库表中有created_at和update_at字段。如果你不希望让模型来自动维护这两个字段,可在模型内将$timestamps = false;
public $timestamps = false;
// 批量赋值,当通过create 方法来保存数据时,你需要先在你的模型上定义$fillable或$guarded属性
// 允许添加的字段
protected $fillable = ['name'];
// 拒绝添加的字段
// protected $guarded = [''];
}
基本操作
- 别忘记 .env 配置哟
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=sql_6 DB_USERNAME=root DB_PASSWORD=1234
添加数据
- 在laravel里面添加数据的时候,需要先实例化模型,然后为模型设置属性,最后调用save方法即可。
public function fun1() { $table = new Info(); // 实例化模型,将表和类映射起来 $table -> name = "AAA"; $table -> save(); }
- 如果使用create方法,则需要在模型中定义fillable属性,允许写入字段的定义,如果没有时间相关字段也需要禁用时间自动更新功能
public function fun1() { $table = new Info(); // 实例化模型,将表和类映射起来 $table -> create(['name' => 'BBB']); }
查询操作
- find(id) 获取指定主键的一条数据
public function fun2() { $data = Info::find(4) -> toArray(); dd($data); }
- all() 只能直接调用,不可以做其它操作,查询多行并且指定字段。
public function fun2() { // 别像这样写,all() 只可以直接调用 // $data = where('id','>','4') -> Info::all(); $data = Info::all(); dd($data); }
修改数据
- 采用AR模式:先获取对应的记录,返回一个模型对象,然后为该模型对象设置要更新的数据(对象的属性),最后调用save方法即可。
public function fun3() { $result = Info::find(4); $result -> name = "ABC"; $result -> save(); }
- update() 更新数据
public function fun3() { $result = Info::where('id','=','3') -> update( [ 'name' => 'AAA' ] ); dd($result); }
删除数据
- 采用AR模式:先查询出对应记录,返回一个模型对象,然后调用模型对象的delete方法即可。
public function fun4() { $result = Info::find(4); dd($result -> delete()); }
- 可以这样
public function fun4() { $result = Info::where('id','3') -> delete(); dd($result); }