👨💻个人主页:@开发者-曼亿点
👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!
👨💻 本文由 曼亿点 原创
👨💻 收录于专栏:PHP程序开发
⭐🅰⭐
—
文章目录
- ⭐🅰⭐
- ⭐前言⭐
- 🎶一、 模型的创建
- 🐤1.定义模型
- 🐤2.命名规则
- 🐤3.创建模型
- 🐤4.创建模型的注意事项
- 🎶二、模型在控制器的引入
- 🎶三、模型的添加操作
- 🎶四、模型的查询修改删除操作
- 🐤1.查询
- 🐤2.修改
- 🐤3.删除
- 结束语🥇
⭐前言⭐
Laravel自带的Eloquent ORM 提供了一个美观、简单的与数据库打交道的ActiveRecord实现,每张数据对对应一个与该表进行交互的"Model"模型,模型允许你在表中进行数据查询,以及插入、更新、删除等。
AR模式三个核心(映射)
名称 | 解析 |
---|---|
每个数据表 | 与数据进行交互的MOdel模型映射(实列化模型) |
记录的字段 | 与模型类的属性映射(给属性赋值) |
表中的每个记录 | 与一个完整的请求实列映射(具体的CURD操作) |
🎶一、 模型的创建
🐤1.定义模型
(1)定义位置
定义模型的位置,默认在app目录下面,但是为了管理方便,建议目录进行创建:
🐤2.命名规则
本身laravel对模型的命名没有严格的要求,一般采取表名(首字母大小).php
比如:Member.php User.php Goods.php
🐤3.创建模型
可以使用artisan命令:
[project]>php artisan make::model Member
界面区:
🐤4.创建模型的注意事项
第一:(必做)定义一个table 属性,值是不要前缀的表名,如果不指定则使用类名的复数形式作为表名。如果模型为Member 模型在不指定 table 属性的情况下,其默认会去找members 表。修饰词:protected。
第二:(可选)定义primaryKey,属性,值是主键名称,如果需要使 AR 模式的 find 方法,则可能需要指定主键(Model:.find(n)),在主键字段不是id 的时候则需要指定主键。修饰词protected。
第三:(可选)定义timestamps 属性,值是false,如果不设置为false,则默认会操作表中的 created _at.和 updated_at,字段,我们表中一般没有这两个字段,所以设置为 false,表示不要操作这两个字段。修饰词:public。
第四:(可选)定义$fiable 属性,表示使用模型插入数据时,允许插入到数据库的字段信息。修饰词:protected
创建属性的代码如下:
<?phpnamespace App\Models\Home;use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;class Member extends Model
{//定义模型关联的数据表(一个模型只操作一个表)protected $table='member';//定义主键(可选)protected $primaryKey='id';//定义禁止操作时间public $timestamps=false;//设置允许写入的数组字段protected $fillable=['id','name','age','email','avatar'];//use HasFactory;
}
注意:使用模型中create插入数据时,要设置fillable允许入库的字段,使用guarded是设置排除入库的字段。
🎶二、模型在控制器的引入
1.引入Member模型类:use App\Member;
2.模型的使用:模型在控制器中的使用方式有两种:
①直接像使用DB门面一样的操作方式,以调用静态方式为主的形式,该形式下模型不需要实例化:Member::get() 等价于 DB:table(“member”)->get( );
②实列化模型然后再去使用模型类(普通)
列如:$model=new Member: $ model->get();
3.定义测试路由:
//模型的增删改查;
Route::any(‘/homeAdda’,[IndexController::class,‘adda’])->name(‘adda’);
Route::get(‘/homeDela’,[IndexController::class,‘dela’]);
Route::get(‘/homeUpdatea’,[IndexController::class,‘updatea’]);
Route::get(‘/homeSelecta’,[IndexController::class,‘selecta’]);
路由可以使用路由1群组的方式进行定义。
🎶三、模型的添加操作
在larave里面完成添加可以使用两种方式
方式一:(AR模式):使用AR模式必须要实列化模型
注意:在laravel里面添加数据的时候,需要先实列化模型,然后为模型设置属性,最后调用save方式即可:
$ member =new Member( ); //映射关系1:将表映射到模型
$ member->name=value ;//映射关系2:将字段映射到属性,属性名和字段名一致
$ member->age=value ;
…
$ member ->save( );//映射关系1:将表映射到实列
public function adda( )
{//表映射到模型类(给属性赋值的操作)$model=new Member();//给属性赋值$model->name='张三';$model->age='23';$model->email='zhangsan@qq.com';// //去做具体的操作,将记录映射到实列$result=$model->save();dd($result);
}
以上的方式可以完成数据的插入,但是不建议使用。我们可以使用laravel提供的更加高级的操作。
方式二:建立一个简要的表单,表单中有姓名、年龄、邮箱的字段,要求能够提交。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><link rel="stylesheet" href="css/weui.css"/><meta name="viewport" content="width=device-width, initial-scale=1.0">{{-- 系统的asset方法引入 --}}<link rel="stylesheet" type="test/css" href="{{asset('css')}}/app.css"><title>实战训练</title>
</head>
<body><form method="post" action="{{route('adda')}}">
<p>姓名:<input type="text" name='name' value="" ></p>
<p>年龄:<input type="text" name='age' value="" ></p>
<p>邮箱:<input type="text" name='email' value="" ></p>
{{ csrf_field() }}<input type="submit" value="提交">
</form>
</body>
</html>
展示图:
首先,在控制器文件引入Request这个类
use Illuminate\Http\Request;
添加代码的模型类代码:
//添加方式-AR模式,OMR模式
public function adda(Request $request)
{//表映射到模型类(给属性赋值的操作)$model=new Member();$requests = $request -> all();$result = $model -> create(['name' => $requests['name'], 'age' => $requests['age'], 'email' => $requests['email']]);var_dump($request->all());dd($result);};
展示图:
注意:如果使用create方法,则需要在模型中定义fillable属性,允许写入字段的定义,如果没有时间相关字段也需要禁用时间自动更新功能。
🎶四、模型的查询修改删除操作
🐤1.查询
获取指定主键的一条数据
$ info =Member::find(4);//静态的方法的调用,获取主键为4的数据
案列:查询一个id>4的第一个数据数组:
//查询操作
public function selecta()
{
//查询指定主键记录
//$data=Member::find(1)->toArray();
$data=Member::where('id','>',4)->first()->toArray();
dd($data);
}
结果图:
🐤2.修改
注意:在laravel里面如果需要更新数据(ORM模型方式),需要首先调用模型的find 方法获取对应记录,返回一个模型对象,然后为该模型对象设置要更新的新数据(对象的属性)最后调用save()
即可:
例如:
$ user =User::find($id);
$ user ->title=$ POST[‘title’];
案例:实现ORM形式模型的修改操作。修该为7的用户的邮箱admin@nnb.com
//对数据进行修改
public function updatea()
{
$data=Member::find(7);
$data->email='admin@nnb.com';
$result=$data->save();
dd($result);
}
展示图:
🐤3.删除
注意:在laravel里面如果需要删除数据(ORM模型方式),如果需要使用AR删除数据必须id查询对应的记录,返回一个模型对象,然后调用模式对象的delete方法即可。
例如代码:
$ user=User::find( $id)
return $ user->delect()?‘ok’:‘fail’;
案列:使用AR模型删除id为7的记录
//对数据进行删除
public function dela()
{$data=Member::find(7);$result=$data->delete();dd($result);
}
展示图:
结束语🥇
以上就是PHP程序设计
持续更新PHP程序设计教程,欢迎大家订阅系列专栏🔥PHP程序开发你们的支持就是曼亿点创作的动力💖💖💖