新闻中心

Lar*elEloquentORM怎么用_Lar*elEloquentORM基础操作及高级查询技巧

2025-11-25
浏览次数:
返回列表
答案:Lar*el的Eloquent ORM通过模型操作数据库,支持CRUD、关联、作用域等功能;需定义模型类并配置表名、主键等,使用all()、where()、create()、update()、delete()等方法实现数据操作。

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

Lar*el 的 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'];
}

注意:Lar*el 默认假设模型名为单数,对应复数形式的数据表(如 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->s*e();

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

// 批量更新
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();
范围查询(局部作用域):

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

美图云修 美图云修

商业级AI影像处理工具

美图云修 50 查看详情 美图云修
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 功能远不止这些,但掌握上述内容已能应对大多数开发需求。实际项目中建议结合文档深入使用事件、观查器、集合操作等特性。

以上就是Lar*elEloquentORM怎么用_Lar*elEloquentORM基础操作及高级查询技巧的详细内容,更多请关注其它相关文章!


# 如何将  # 网站建设合作协议  # IT网站建设需要  # 网站优化失误案例分析题  # 烟台果好网站优化价格  # 北仑网站建设方案模板  # 网站截流怎么做网站推广  # 门诊网站建设费用低  # 烘焙店线上营销推广方案  # 绵阳网络推广营销哪家好  # 于洪区网站建设信息中心  # 主键  # 修改器  # word  # 自动生成  # 链式  # 分页  # 面向对象  # 可选  # 美图  # 文档  # 作用域  # ai  # app  # laravel 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 优化 Python 函数中的条件逻辑:解决 if-else 嵌套与参数选择问题  126邮箱账号注册 电脑版登录入口  印象笔记怎样用批量导出备知识库_印象笔记用批量导出备知识库【备份方法】  MAC的“快捷指令”怎么同步到iPhone_MAC利用iCloud同步所有设备的自动化指令  c++如何实现一个简单的ECS框架_c++数据驱动设计与游戏开发  在python-socketio事件处理器中安全访问Flask应用上下文  C#使用XPath查询节点时出错? 常见语法错误与调试技巧  J*aScript中针对特定容器内图片动画的实现教程  拼多多视频播放卡顿如何处理 拼多多视频播放优化技巧  离线运行Go语言之旅:本地部署与GOPATH配置指南  C++如何实现一个装饰器模式_C++设计模式之动态地给对象添加额外职责  厨房不锈钢水槽发黑生锈怎么处理_水槽用可乐+锡纸2分钟抛亮如新  Python Socket多播通信中指定源IP地址的实践指南  QQ邮箱登录首页官网地址2026 QQ邮箱官方网页入口  痛风发作了怎么办? 快速止痛和后期饮食调理  html怎么在cmd下运行php文件_cmd运行html中php文件方法【教程】  在哪找SublimeJ远程工具_SFTP插件配置教程  知音漫客正版漫画平台_知音漫客官网账号登录  谷歌浏览器无痕模式怎么开 Chrome开启无痕浏览设置方法【教程】  荒野行动PC版怎么注册_荒野行动PC版账号注册详细流程图文教程  sublime如何配置Python开发环境_将sublime打造成轻量级Python IDE  不会效仿卡普空!《铁拳》制作人澄清:不采取赛事付费|直播|  Win10如何清理注册表垃圾 Win10手动清理无效注册表【技巧】  快手网页版在线登录 快手网页版官网入口快速访问  一加Ace 6T支持全新明眸护眼:通过了最严苛的护眼小金标认证  使用 Pandas 高效处理 .dat 文件:字符清理与数据计算  如何在 Windows 11 中启动游戏手柄设置  C++ map遍历方法大全_C++ map迭代器使用总结  顺丰国际快递查询 国际件官方查询入口  汽车之家官方网站官网入口_汽车之家网页版直接进入  蛙漫官网漫画入口地址_蛙漫在线畅读无广告弹窗  飞书妙记怎样用语音转文字速记_飞书妙记用语音转文字速记【速记方法】  天眼查企业查询官网入口 天眼查官方网页版查询  Yandex免登录官网入口_俄罗斯Yandex搜索引擎直达链接  Spring Boot嵌入式服务器与J*a EE:功能支持深度解析  学习通网页版快速入口 学习通官网网页版直接打开  J*aScript类型检查_j*ascript代码规范  天猫双十一预售商品怎么退款_天猫双十一预售退款操作指南  mysql备份恢复性能优化_mysql备份恢复性能优化方法  J*aScript Promise链中如何正确终止后续.then执行并处理错误  单12V-2&#215;6实现为RTX 5090供电750W!甚至都没敢跑分  怎么去除衣服上的口红印_生活小妙招教你用酒精轻松擦除  俄罗斯Yandex免登录入口_Yandex搜索引擎官网一键直达  荣耀Play7TPro怎样在信息App置顶客服对话_iPhone荣耀Play7TPro信息App置顶客服对话【优先查看】  163邮箱网页版入口导航平台 163邮箱网页版登录入口官网导航  押井守高度称赞《辐射4》:玩了八年都停不下来!  AO3最新镜像入口 Archive of Our Own官方平台访问  LINUX的I/O重定向是什么_深入理解LINUX中 >、>> 与 < 的区别  MAC怎么让Dock栏只显示当前运行的应用_MAC终端命令实现极简Dock栏  怎么在html里运行vbs脚本_html中运行vbs脚本方法【教程】 

搜索