前言
如果你是一个从没用接触过框架的新手,你在进行数据库操作的时候可能会创建数据库链接,然后进行数据操作,最后关闭数据库连接。这种方式听起来貌似不错,但是当程序复杂起来后,每个地方都要进行同样的数据库连接,关闭等操作,这必然就不符合代码复用的原则,并且难以维护(数据库信息更改后,需要改很多地方)。
所以就有了MVC模式,根据程序需求自行封装数据库操作类,需要进行数据库操作时,引入类文件,new一个数据库对象即可。如果数据库信息更改,也只需要更改数据库操作类,提升了代码的复用,也便于后期维护。
而在Laravel中的模型就相当于一个功能完善的数据库Helper类,不需要用户自己写,只要掌握基本用法就能很快速方便的对数据库进行操作,哪怕你一点不懂SQL语句。
看了接下来的Laravel模型的使用之后你就会爱上Laravel的Eloquent ORM模型,这也是我直接介绍模型而不讲解其他数据库操作的原因。
Laravel 数据库配置
要想使用模型,第一个要设置的当然是数据库信息。在第一章就有介绍到,数据库信息保存在项目根目录的 .env 文件中,找到相关的数据库信息,进行修改成自己的数据库配置保存即可。
Eloquent ORM
Laravel 的 Eloquent ORM 提供了漂亮、简洁的 ActiveRecord 实现来和数据库交互。每个数据库表都有一个对应的「模型」用来与该表交互。你可以通过模型查询数据表中的数据,并将新记录添加到数据表中。
定义(绑定)模型
模型创建
首先,用 php artisan make:model 命令创建模型文件(默认存放于/app目录下)。
模型设置
模板基础框架如下
代码语言:javascript复制<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class Test extends Model
{
//
}
首先 我们要指定模板对应的 表
代码语言:javascript复制protected $table = "YourTableName";
然后定义主键名称
代码语言:javascript复制protected $primaryKey = 'user_id';//如不指定,默认主键为 'id'
指定可供批量复制的字段名
代码语言:javascript复制protected $fillable = ['name', 'age', 'sex'];// 批量复制白名单
禁止时间戳
代码语言:javascript复制public $timestamps = false;//默认情况下,Eloquent 会默认数据表中存在 created_at 和 updated_at 这两个字段。如果你不需要这两个字段,则需要在模型内将 $timestamps 属性设置为 false
模型获取
要对数据进行操作的第一步是获取操作对象。本章只介绍几个常用的简单的获取数据的方法,详细方法会单独一章写出用作资料查询!
获取某个学生信息并渲染到模板后输出
/app/Http/Controllers/StudentController.php
代码语言:javascript复制<?php
namespace AppHttpControllers;
use AppStudent;//Student模型
class StudentController extends Controller
{
// Student detail
public function detail($id)
{
$student = Student::find($id);// 获取ID为$id的对象
return view('student.detail') -> with(['student' => $student]);// 将该对象的数据用student.detail模板渲染后输出
}
}
resources/Views/student/detail.blade.php
代码语言:javascript复制@extends('app')
@section('title')
Student -> Index
@stop
@section('main')
<article>
<h1>{{ $student -> name }}</h1>
<!-- 用 -> 后面接属性名即可访问到对应的值 -->
<p>{{ $student -> info }}</p>
</article>
@stop
模型操作
获取对象后只需要简单的几行语句即可对数据库进行操作,你不需要考虑数据库连接与断开,也不需要知道SQL语句,你只需要按照Eloquent ORM提供的方法进行对应的操作即可。
add/update
- new/获取一个Student对象
- 对各个字段名进行赋值
- 保存到数据库
use AppStudent;//Student模型
$xiaoming = Student::find(1);// 获取已存在的学生对象小明(update)
$daming = new Student;// 新建一个学生对象大明(add)
$xiaoming->name = 'xiaoming';// 修改字段名
$daming->name = 'daming';// 赋值字段名
$xiaoming->save();// 保存至数据库
$daming->save();// 保存至数据库
drop
- 获取对象
- 删除对象
$xiaoming = Student::find(1);
$xiaoming->delete();
Eloquent ORM是通过调用laravel内置的方法来对数据库进行增删改查等操作的,这种方式很大程度上解决了数据库注入等安全问题,同时也增加了代码复用能力。它能让一个完全不懂SQL语句的新手,在短短几分钟设计出来完美的数据库查询语句。