0

0

LaravelEloquentORM怎么用_LaravelEloquentORM基础操作及高级查询技巧

看不見的法師

看不見的法師

发布时间:2025-11-25 21:29:16

|

203人浏览过

|

来源于php中文网

原创

答案:Laravel的Eloquent ORM通过模型操作数据库,支持CRUD、关联、作用域等功能;需定义模型类并配置表名、主键等,使用all()、where()、create()、update()、delete()等方法实现数据操作。

laraveleloquentorm怎么用_laraveleloquentorm基础操作及高级查询技巧

Laravel 的 Eloquent ORM 是一个功能强大的 ActiveRecord 实现,让你可以用面向对象的方式操作数据库。每个模型对应一张数据表,通过模型可以轻松实现增删改查、关联查询、作用域、访问器等高级功能。下面从基础操作到高级技巧,带你全面掌握 Eloquent ORM 的使用。

基础模型定义与配置

在使用 Eloquent 之前,首先要创建模型类。通常放在 app/Models 目录下(需手动创建目录并更新命名空间)。

例如,有一个 users 表,创建对应的模型:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    // 可选:指定表名(如果不遵循复数规则)
    protected $table = 'users';

    // 可选:指定主键字段
    protected $primaryKey = 'id';

    // 可选:关闭自动维护 created_at 和 updated_at
    public $timestamps = false;

    // 允许批量赋值的字段
    protected $fillable = ['name', 'email', 'password'];
}

注意:Laravel 默认假设模型名为单数,对应复数形式的数据表(如 User → users),若不符合规则需手动指定 $table

基本增删改查操作

基于上面的 User 模型,进行常见 CRUD 操作。

查询所有记录:
User::all();
根据条件查询一条记录:
User::where('name', 'John')->first();
获取多条记录:
User::where('active', 1)->get();
插入新记录:
$user = new User;
$user->name = 'Alice';
$user->email = 'alice@example.com';
$user->save();

// 或使用 create 方法(需 fillable 配置)
User::create([
    'name' => 'Bob',
    'email' => 'bob@example.com'
]);
更新记录:
$user = User::find(1);
$user->name = 'New Name';
$user->save();

// 批量更新
User::where('active', 0)->update(['active' => 1]);
删除记录:
// 删除单个
$user = User::find(1);
$user->delete();

// 根据条件删除
User::where('created_at', '<', now()->subDays(30))->delete();

高级查询技巧

Eloquent 提供了丰富的链式调用方法,支持复杂查询场景。

分页查询:
User::where('active', 1)->paginate(10);

在视图中可直接使用 {{ $users->links() }} 渲染分页导航。

排序与限制:
User::orderBy('name', 'desc')->limit(5)->get();
范围查询(局部作用域):

在模型中定义常用查询封装:

SEO GPT
SEO GPT

免费的白帽SEO,PPC和网站经销商平台

下载
class User extends Model
{
    public function scopeActive($query)
    {
        return $query->where('active', 1);
    }

    public function scopeByRole($query, $role)
    {
        return $query->where('role', $role);
    }
}

使用方式:

User::active()->byRole('admin')->get();
访问器与修改器:

用于格式化字段读取或写入时的行为。

// 访问器:获取 name 字段时首字母大写
public function getNameAttribute($value)
{
    return ucfirst($value);
}

// 修改器:保存 email 前转为小写
public function setEmailAttribute($value)
{
    $this->attributes['email'] = strtolower($value);
}

关联关系使用示例

Eloquent 支持多种关联关系,比如一对一、一对多、多对多等。

用户与文章(一对多):
class User extends Model
{
    public function posts()
    {
        return $this->hasMany(Post::class);
    }
}

class Post extends Model
{
    public function user()
    {
        return $this->belongsTo(User::class);
    }
}

使用:

$user = User::with('posts')->find(1); // 预加载避免 N+1
foreach ($user->posts as $post) {
    echo $post->title;
}
用户与角色(多对多):
class User extends Model
{
    public function roles()
    {
        return $this->belongsToMany(Role::class);
    }
}

中间表默认为 role_user,可通过参数自定义。

添加角色:

$user->roles()->attach($roleId);

读取带条件的角色:

$user->roles()->where('active', 1)->get();
基本上就这些。Eloquent 功能远不止这些,但掌握上述内容已能应对大多数开发需求。实际项目中建议结合文档深入使用事件、观查器、集合操作等特性。

相关专题

更多
laravel组件介绍
laravel组件介绍

laravel 提供了丰富的组件,包括身份验证、模板引擎、缓存、命令行工具、数据库交互、对象关系映射器、事件处理、文件操作、电子邮件发送、队列管理和数据验证。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

316

2024.04.09

laravel中间件介绍
laravel中间件介绍

laravel 中间件分为五种类型:全局、路由、组、终止和自定。想了解更多laravel中间件的相关内容,可以阅读本专题下面的文章。

271

2024.04.09

laravel使用的设计模式有哪些
laravel使用的设计模式有哪些

laravel使用的设计模式有:1、单例模式;2、工厂方法模式;3、建造者模式;4、适配器模式;5、装饰器模式;6、策略模式;7、观察者模式。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

368

2024.04.09

thinkphp和laravel哪个简单
thinkphp和laravel哪个简单

对于初学者来说,laravel 的入门门槛较低,更易上手,原因包括:1. 更简单的安装和配置;2. 丰富的文档和社区支持;3. 简洁易懂的语法和 api;4. 平缓的学习曲线。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

368

2024.04.10

laravel入门教程
laravel入门教程

本专题整合了laravel入门教程,想了解更多详细内容,请阅读专题下面的文章。

81

2025.08.05

laravel实战教程
laravel实战教程

本专题整合了laravel实战教程,阅读专题下面的文章了解更多详细内容。

64

2025.08.05

laravel面试题
laravel面试题

本专题整合了laravel面试题相关内容,阅读专题下面的文章了解更多详细内容。

67

2025.08.05

go语言 面向对象
go语言 面向对象

本专题整合了go语言面向对象相关内容,阅读专题下面的文章了解更多详细内容。

55

2025.09.05

PHP 表单处理与文件上传安全实战
PHP 表单处理与文件上传安全实战

本专题聚焦 PHP 在表单处理与文件上传场景中的实战与安全问题,系统讲解表单数据获取与校验、XSS 与 CSRF 防护、文件类型与大小限制、上传目录安全配置、恶意文件识别以及常见安全漏洞的防范策略。通过贴近真实业务的案例,帮助学习者掌握 安全、规范地处理用户输入与文件上传的完整开发流程。

1

2026.01.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Laravel---API接口
Laravel---API接口

共7课时 | 0.6万人学习

PHP自制框架
PHP自制框架

共8课时 | 0.6万人学习

PHP面向对象基础课程(更新中)
PHP面向对象基础课程(更新中)

共12课时 | 0.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号