Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)

发布时间 - 2025-12-18 00:00:00    点击率:
Laravel 中 Eloquent ORM 以模型映射数据表,通过迁移创建表,支持链式查询(如 all、find、where)、create/save/update 增改操作(需 fillable 白名单)、destroy/delete 删除(含软删除),语义清晰高效。

在 Laravel 中,Eloquent ORM 是默认的数据库操作方式,它让数据库交互变得像操作 PHP 对象一样自然。只要模型定义正确,CRUD 操作几行代码就能完成。

创建模型和迁移

先生成模型和对应的数据表迁移:

  • php artisan make:model Post -m —— 创建 Post 模型和 create_posts_table 迁移
  • 编辑迁移文件,在 up() 方法中定义字段,比如:
    $table->string('title');
    $table->text('content');
    $table->timestamps();
  • 运行 php artisan migrate 创建数据表

读取(Read):查询数据

Eloquent 提供链式查询方法,返回模型实例或集合:

  • Post::all() —— 获取全部文章
  • Post::find(1) —— 根据主键查单条(查不到返回 null)
  • Post::where('status', 'published')->get() —— 条件查询,返回集合
  • Post::firstWhere('slug', 'hello-world') —— 查第一条匹配记录

新增(Create)与更新(Update)

两种常用方式:静态方法 or 实例方法

  • 新增
    $post = Post::create(['title' => '新文章', 'content' => '正文']);
    注意:模型需设置 $fillable 白名单,如 protected $fillable = ['title', 'content'];
  • 更新
    $post = Post::find(1);
    $post->title = '已修改标题';
    $post->save();

    或直接用 Post::where('id', 1)->update(['title' => '批量改标题']);

删除(Delete)

支持软删除和硬删除:

  • Post::destroy(1) —— 根据主键删除(可传数组批量删)
  • $post->delete() —— 实例调用删除
  • 启用软删除:在模型中加 use SoftDeletes;,并添加 deleted_at 字段到迁移中;此时 delete() 不真正删数据,只标记时间

基本上就这些。Eloquent 的核心是“模型即数据表”,写法简洁、语义清晰,配合自动时间戳、批量赋值保护、关系预加载等特性,日常开发效率很高。


# php  # laravel  # String  # NULL  # protected  # delete  # 对象  # table  # 数据库  # 链式  # 主键  # 就能  # 两种  # 很高  # 第一条  # 中加  # 单条  # 几行  # 加载 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议  Laravel如何处理异常和错误?(Handler示例)  如何在香港服务器上快速搭建免备案网站?  如何撰写建站申请书?关键要点有哪些?  如何快速打造个性化非模板自助建站?  Win11关机界面怎么改_Win11自定义关机画面设置【工具】  香港服务器租用每月最低只需15元?  js实现点击每个li节点,都弹出其文本值及修改  网站制作免费,什么网站能看正片电影?  Laravel如何操作JSON类型的数据库字段?(Eloquent示例)  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  javascript中闭包概念与用法深入理解  制作公司内部网站有哪些,内网如何建网站?  浅谈redis在项目中的应用  如何为不同团队 ID 动态生成多个“认领值班”按钮  如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体  Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南  Laravel如何配置Horizon来管理队列?(安装和使用)  图册素材网站设计制作软件,图册的导出方式有几种?  如何在IIS中新建站点并解决端口绑定冲突?  如何有效防御Web建站篡改攻击?  简历在线制作网站免费版,如何创建个人简历?  Claude怎样写约束型提示词_Claude约束提示词写法【教程】  如何实现建站之星域名转发设置?  详解vue.js组件化开发实践  如何在腾讯云免费申请建站?  如何在景安服务器上快速搭建个人网站?  如何生成腾讯云建站专用兑换码?  如何快速查询域名建站关键信息?  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框  如何在阿里云部署织梦网站?  Laravel怎么为数据库表字段添加索引以优化查询  Laravel如何使用查询构建器?(Query Builder高级用法)  Laravel如何实现API版本控制_Laravel版本化API设计方案  制作旅游网站html,怎样注册旅游网站?  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  怎样使用JSON进行数据交换_它有什么限制  Laravel如何创建自定义中间件?(Middleware代码示例)  php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】  标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南  Python正则表达式进阶教程_复杂匹配与分组替换解析  如何用y主机助手快速搭建网站?  微信小程序 scroll-view组件实现列表页实例代码  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)  什么是javascript作用域_全局和局部作用域有什么区别?  ,在苏州找工作,上哪个网站比较好?  Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程