目录
创建模型和迁移文件
基本的增删改查操作
使用关联模型处理关系
使用查询作用域简化常用查询
首页 php框架 Laravel 如何在Laravel中使用雄辩的ORM?

如何在Laravel中使用雄辩的ORM?

Jul 30, 2025 am 03:12 AM

使用 Eloquent ORM 写 Laravel 应用并不难,其核心在于将数据库表映射为 PHP 对象,减少原始 SQL 的编写。1. 创建模型和迁移文件可通过 Artisan 命令一键生成,并定义字段和表名映射。2. 增删改查操作简洁,支持 all、find、where 等方法进行查询,通过 new、save、delete 实现数据操作。3. 关联模型可处理一对多、多对一关系,在模型中定义 posts 和 user 方法实现关联访问。4. 查询作用域用于封装常用查询条件,如定义 scopePublished 方法实现只查已发布文章,提升代码复用性和可读性。掌握这四个核心点,即可应对大部分 Laravel 开发场景。

How to use Eloquent ORM in Laravel?

用 Eloquent ORM 写 Laravel 应用,其实并不难。它本质上就是把数据库表和 PHP 对象做映射,让你不用写太多原始 SQL,也能完成增删改查等操作。只要你理解了模型和数据库之间的关系,基本就能上手用了。

How to use Eloquent ORM in Laravel?

创建模型和迁移文件

在 Laravel 中使用 Eloquent 的第一步,是创建模型和对应的数据库迁移文件。你可以用 Artisan 命令一次性生成:

php artisan make:model Post -mf

这样会创建一个 Post 模型、一个迁移文件,还有一个工厂(用来生成测试数据)。迁移文件里你只需要定义字段,比如:

How to use Eloquent ORM in Laravel?
Schema::create('posts', function (Blueprint $table) {
    $table->id();
    $table->string('title');
    $table->text('content');
    $table->timestamps();
});

执行迁移后,你的数据库表就准备好了。模型默认会对应到表名的复数形式(比如 Post 对应 posts),如果你的表名不一致,可以在模型里加一句:

protected $table = 'my_posts';

基本的增删改查操作

Eloquent 提供了非常简洁的方法来做基础查询。比如你想查出所有文章:

How to use Eloquent ORM in Laravel?
$posts = Post::all();

查某个 ID 的文章:

$post = Post::find(1);

带条件查询可以用 where

$posts = Post::where('title', 'like', '%Laravel%')->get();

新增数据也很简单:

$post = new Post();
$post->title = 'My First Post';
$post->content = 'Hello world!';
$post->save();

更新的话,先查出来再改字段保存:

$post = Post::find(1);
$post->title = 'Updated Title';
$post->save();

删除也是一样:

$post = Post::find(1);
$post->delete();

使用关联模型处理关系

Eloquent 的一大优势就是能轻松处理表之间的关联关系。比如一个用户有多个文章,你可以在 User 模型里定义:

public function posts()
{
    return $this->hasMany(Post::class);
}

然后你就可以这样取用户的文章:

$user = User::find(1);
foreach ($user->posts as $post) {
    echo $post->title;
}

反过来,如果文章属于某个用户,在 Post 模型里写:

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

这样你就能直接访问 $post->user->name 这样的数据了。

使用查询作用域简化常用查询

如果你有一些常用的查询条件,比如只查已发布的文章,可以定义一个本地作用域:

public function scopePublished($query)
{
    return $query->where('published', true);
}

然后在使用时直接调用:

$posts = Post::published()->get();

这样代码更清晰,也方便复用。

基本上就这些。Eloquent 功能很多,但上面这些内容已经能覆盖大部分日常开发需求了。只要模型和数据库结构对得上,用起来还是很顺手的。

以上是如何在Laravel中使用雄辩的ORM?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

PHP教程
1596
276
Laravel中的配置缓存是什么? Laravel中的配置缓存是什么? Jul 27, 2025 am 03:54 AM

Laravel的配置缓存通过合并所有配置文件为一个缓存文件来提升性能。在生产环境中启用配置缓存可减少每次请求时的I/O操作和文件解析,从而加快配置加载速度;1.应在部署应用、配置稳定且无需频繁更改时启用;2.启用后修改配置需重新运行phpartisanconfig:cache才会生效;3.避免在配置文件中使用依赖运行时条件的动态逻辑或闭包;4.排查问题时应先清除缓存、检查.env变量并重新缓存。

如何在Laravel测试中模拟对象? 如何在Laravel测试中模拟对象? Jul 27, 2025 am 03:13 AM

UseMockeryforcustomdependenciesbysettingexpectationswithshouldReceive().2.UseLaravel’sfake()methodforfacadeslikeMail,Queue,andHttptopreventrealinteractions.3.Replacecontainer-boundserviceswith$this->mock()forcleanersyntax.4.UseHttp::fake()withURLp

如何运行Laravel项目? 如何运行Laravel项目? Jul 28, 2025 am 04:28 AM

checkphp> = 8.1,作曲家和韦伯佛; 2.cleteproeateprojectandruncomposerinstall; 3.copy.env.exampleto.envandrunphpartisankey :生成; 4.setDatabasecredentialsin.envandrunphpartisanmigrate-seed; 5.StartServerServerWithPhpartisanServe; 6.optionallyrunnnpmins

如何在Laravel中实施推荐系统? 如何在Laravel中实施推荐系统? Aug 02, 2025 am 06:55 AM

创建referrals表记录推荐关系,包含推荐人、被推荐人、推荐码及使用时间;2.在User模型中定义belongsToMany和hasMany关系以管理推荐数据;3.用户注册时生成唯一推荐码(可通过模型事件实现);4.注册时通过查询参数捕获推荐码,验证后建立推荐关系并防止自荐;5.当被推荐用户完成指定行为(如下单)时触发奖励机制;6.生成可分享的推荐链接,可使用Laravel签名URL增强安全性;7.在仪表板展示推荐统计信息,如总推荐数和已转化数;必须确保数据库约束、会话或Cookie持久化、

如何在Laravel应用中实现功能标志? 如何在Laravel应用中实现功能标志? Jul 30, 2025 am 01:45 AM

Chooseafeatureflagstrategysuchasconfig-based,database-driven,orthird-partytoolslikeFlagsmith.2.Setupadatabase-drivensystembycreatingamigrationforafeature_flagstablewithname,enabled,andrulesfields,thenrunthemigration.3.CreateaFeatureFlagmodelwithfilla

如何在Laravel中播种数据库? 如何在Laravel中播种数据库? Jul 28, 2025 am 04:23 AM

创建seeder文件:使用phpartisanmake:seederUserSeeder生成seeder类,并在run方法中通过模型工厂或数据库查询插入数据;2.在DatabaseSeeder中调用其他seeder:通过$this->call()按顺序注册UserSeeder、PostSeeder等,确保依赖关系正确;3.运行seeder:执行phpartisandb:seed运行所有注册的seeder,或使用phpartisanmigrate:fresh--seed重置并重新填充数据;4

如何使用Laravel构建REST API? 如何使用Laravel构建REST API? Jul 30, 2025 am 03:41 AM

创建新Laravel项目并启动服务;2.生成模型、迁移和控制器并运行迁移;3.在routes/api.php中定义RESTful路由;4.在PostController中实现增删改查方法并返回JSON响应;5.使用Postman或curl测试API功能;6.可选地通过Sanctum添加API认证;最终得到一个结构清晰、功能完整且可扩展的LaravelRESTAPI,适用于实际应用。

Laravel Raw SQL查询示例 Laravel Raw SQL查询示例 Jul 29, 2025 am 02:59 AM

Laravel支持使用原生SQL查询,但应优先使用参数绑定以确保安全;1.使用DB::select()执行带参数绑定的SELECT查询,防止SQL注入;2.使用DB::update()执行UPDATE操作并返回影响行数;3.使用DB::insert()插入数据;4.使用DB::delete()删除数据;5.使用DB::statement()执行如CREATE、ALTER等无结果集的SQL语句;6.推荐在QueryBuilder中使用whereRaw、selectRaw等方法结合原生表达式以提升安

See all articles