首页 > 编程笔记 > PHP笔记 阅读:6

Laravel Eloquent模型的定义和使用(附带实例)

Laravel 框架内置了一个名称为 Eloquent 的模型组件,用于实现 ORM(对象关系映射)。

ORM 可以简单理解为将数据表(关系)映射为对象,通过表的对象对表进行操作。从代码层面来说,Eloquent 采用了目前在大部分框架中非常流行的 Active Record(活动记录)模式,实现了一种简单、美观的数据库操作方式。

本节将对 Eloquent 模型的使用进行详细讲解。

Laravel定义模型

在 Laravel 中,每张数据表都对应一个模型。利用模型可以实现对数据表数据的查询、添加、修改、删除等操作。模型文件默认保存在 app\Models 目录下,文件命名形式为“表名(首字母大写).php”,如 Student.php、User.php。

使用 php artisan 命令可以自动创建模型,具体命令如下:
php artisan make:model 模型名
例如,为数据库中的 student 表创建一个 Student 模型,可以执行如下命令:
php artisan make:model Student
上述命令执行后,会自动创建 app\Models\Student.php 文件,该文件的代码如下:
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Student extends Model
{
    use HasFactory;
}
在默认情况下,Laravel 会自动将 Student 模型名转换为表名,并使用复数形式,即 students。如果数据表的名称没有使用复数形式,需要在模型类中使用 $table 属性指定表名,示例代码如下:
class Student extends Model
{
    protected $table = 'student';
}
需要注意的是,上述指定的表名,是不包含前缀的表名。这里所说的前缀是指在配置文件 config\database.php 中通过 prefix 为数据表添加前缀,默认不添加前缀。如果将 prefix 设为 pre_,则 Student 模型对应的表名为 pre_student。

在模型类中还可以添加其他可选的属性,具体属性说明如下:
由于 $timestamps 属性默认是开启的,我们需要为 student 表添加 created_at 和 updated_at 字段。添加这两个字段的具体 SQL 语句如下:
ALTER TABLE student ADD created_at TIMESTAMP NULL DEFAULT NULL;
ALTER TABLE student ADD updated_at TIMESTAMP NULL DEFAULT NULL;

如果不想添加这两个字段,也可以在模型类中关闭自动维护时间戳,具体代码如下:
public $timestamps = false;

在控制器中使用模型

模型的使用方式有两种,一种是静态调用,另一种是实例化模型,具体代码如下:
// 方式1:静态调用
Student::get();
// 方式2:实例化模型
$student = new Student();
$student->get();
对于上述两种方式,如果只使用模型类的内置方法,则无须实例化模型,使用方式 1 更加简单;而如果需要用到必须实例化才能使用的方法,则应使用方式 2。

为了在控制器中使用模型,需要先在控制器文件中引入模型的命名空间。例如,在控制器中引入 Student 模型类的命名空间,示例代码如下:
use App\Models\Student;
添加上述代码后,就可以在控制器中使用 Student 模型了。

为了保证能够在控制器中通过模型访问数据库,需要修改 .env 文件中的数据库相关的配置,具体配置如下:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=myframe
DB_USERNAME=root
DB_PASSWORD=123456
上述配置用于设置数据库的连接信息:

相关文章