首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Laravel学习笔记(四)——模型,更安全的数据存取

Laravel学习笔记(四)——模型,更安全的数据存取

原创
作者头像
神无月
修改2020-05-09 10:16:18
1.7K0
修改2020-05-09 10:16:18
举报
文章被收录于专栏:小文博客小文博客

前言

如果你是一个从没用接触过框架的新手,你在进行数据库操作的时候可能会创建数据库链接,然后进行数据操作,最后关闭数据库连接。这种方式听起来貌似不错,但是当程序复杂起来后,每个地方都要进行同样的数据库连接,关闭等操作,这必然就不符合代码复用的原则,并且难以维护(数据库信息更改后,需要改很多地方)。

所以就有了MVC模式,根据程序需求自行封装数据库操作类,需要进行数据库操作时,引入类文件,new一个数据库对象即可。如果数据库信息更改,也只需要更改数据库操作类,提升了代码的复用,也便于后期维护。

而在Laravel中的模型就相当于一个功能完善的数据库Helper类,不需要用户自己写,只要掌握基本用法就能很快速方便的对数据库进行操作,哪怕你一点不懂SQL语句。

看了接下来的Laravel模型的使用之后你就会爱上Laravel的Eloquent ORM模型,这也是我直接介绍模型而不讲解其他数据库操作的原因。

Laravel 数据库配置

要想使用模型,第一个要设置的当然是数据库信息。在第一章就有介绍到,数据库信息保存在项目根目录的 .env 文件中,找到相关的数据库信息,进行修改成自己的数据库配置保存即可。

2018-10-16_145316.png
2018-10-16_145316.png

Eloquent ORM

Laravel 的 Eloquent ORM 提供了漂亮、简洁的 ActiveRecord 实现来和数据库交互。每个数据库表都有一个对应的「模型」用来与该表交互。你可以通过模型查询数据表中的数据,并将新记录添加到数据表中。

定义(绑定)模型

模型创建

首先,用 php artisan make:model 命令创建模型文件(默认存放于/app目录下)。

2018-10-16_153111.png
2018-10-16_153111.png
模型设置

模板基础框架如下

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Test extends Model
{
    //
}

首先 我们要指定模板对应的 表

protected $table = "YourTableName";

然后定义主键名称

protected $primaryKey = 'user_id';//如不指定,默认主键为 'id'

指定可供批量复制的字段名

protected $fillable = ['name', 'age', 'sex'];// 批量复制白名单

禁止时间戳

public $timestamps = false;//默认情况下,Eloquent 会默认数据表中存在 created_at 和 updated_at 这两个字段。如果你不需要这两个字段,则需要在模型内将 $timestamps 属性设置为 false

模型获取

要对数据进行操作的第一步是获取操作对象。本章只介绍几个常用的简单的获取数据的方法,详细方法会单独一章写出用作资料查询!

获取某个学生信息并渲染到模板后输出

/app/Http/Controllers/StudentController.php

<?php

namespace App\Http\Controllers;

use App\Student;//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

@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
  1. new/获取一个Student对象
  2. 对各个字段名进行赋值
  3. 保存到数据库
use App\Student;//Student模型

$xiaoming = Student::find(1);// 获取已存在的学生对象小明(update)
$daming = new Student;// 新建一个学生对象大明(add)

$xiaoming->name = 'xiaoming';// 修改字段名
$daming->name = 'daming';// 赋值字段名

$xiaoming->save();// 保存至数据库
$daming->save();// 保存至数据库
drop
  1. 获取对象
  2. 删除对象
$xiaoming = Student::find(1);

$xiaoming->delete();

Eloquent ORM是通过调用laravel内置的方法来对数据库进行增删改查等操作的,这种方式很大程度上解决了数据库注入等安全问题,同时也增加了代码复用能力。它能让一个完全不懂SQL语句的新手,在短短几分钟设计出来完美的数据库查询语句。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • Laravel 数据库配置
  • Eloquent ORM
    • 定义(绑定)模型
      • 模型创建
      • 模型设置
    • 模型获取
      • 获取某个学生信息并渲染到模板后输出
    • 模型操作
      • add/update
      • drop
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档