首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Laravel Eloquent 模型关联关系(下)

    今天我们将在定义好模型关联的基础上进行关联查询、插入和更新操作,看看如何借助模型关联提高代码的可读性并提高编码效率。...* from `users` where ( select count(*) from `posts` where `users...如果要统计其它关联模型结果数量字段,可以依次类推,对应字段都是 {relation}_count 结构。...注:实际开发中为了提高查询性能,我们往往是在 posts 表中冗余提供一个 comments_count 字段,每新增一条评论,该字段值加 1,查询的时候直接取该字段即可,从而提高查询的性能。...这样,我们就不需要在每个地方去判断如果文章作者信息为空该如何处理了,因为这种情况下返回的也是一个正常的 User 模型实例。

    19.6K30

    Laravel5.8学习日常之分页

    后端分页分为页面有刷新请求及无刷新请求(Ajax请求),就是前台采用按钮事件或者Ajax请求的方式,告知后台进行分页,同时后台进行计算偏移量及当前页码,进行对应页码数据的请求,之后后台查询好数据进行向前台数据进行传递...最简单的是使用 查询构造器 或 Eloquent query 的 paginate 方法。paginate 方法根据用户浏览的当前页码,自动设置恰当的偏移量 offset 和限制数 limit。...Laravel 的分页器将 查询构造器 和 Eloquent ORM 结合起来,提供了方便、易用的数据库结果集分页。通过分页器生成的 HTML 兼容 Bootstrap CSS 框架。...laravel文档介绍 Laravel分页只需要两个步骤: (1)控制器初始化方法增加paginate方法,向前台渲染数据即可; (2)前台将添加一个Laravel自带的语法{{ $data->links...//加载页面 return view('admin.user.index')->with('data',$data)->with('count',$count); } 前台显示代码: <div

    2.2K10

    orm 系列 之 Eloquent演化历程1

    Eloquent Eloquent是laravel中的orm,采取的是active record的设计模式,里面的对象不仅包括领域逻辑,还包括了数据库操作,但是大家平时使用的时候可能没有探究eloquent...是怎么设计的,active record这种模式的优缺点等问题,下面我会带领大家从头开始看看Eloquent是如何设计并实现的。...本文是orm系列的第二篇,也是Eloquent演化的第一篇,Eloquent系列会尝试着讲清楚Eloquent是如何一步一步演化到目前功能强大的版本的,但是毕竟个人能力有限,不可能分析的非常完善,总会有不懂的地方...BaseBuilder上通过Model来获取一些信息设置,譬如$this->from($model->getTable())这种操作,还有一个好处是保持了BaseBuilder的纯净,没有形成Model...\Builder的get的时候,里面有个逻辑是: if (count($models) > 0) { $models = $this->eagerLoadRelations($models); }

    1.1K30

    跟我一起学Laravel-数据库操作和查询构造器

    使用sql语句执行插入 基本插入操作 更新操作 使用sql语句执行更新操作 基本更新操作 指定列的增减 删除操作 使用sql执行删除 基本删除操作 悲观锁 事务处理 查看日志记录 其它操作 在Laravel...'age')->get(); 查询不同的结果distinct $users = DB::table('users')->distinct()->get(); 使用原生表达式 使用DB::raw方法可以向查询中注入需要的...sql片段,但是非常不推荐使用该方法,用不好会 产生sql注入 $users = DB::table('users') ->select(DB::raw('count(*) as user_count...如果需要手动管理事务,则使用如下函数 DB::beginTransaction(); DB::rollback(); DB::commit(); 使用DB类的静态方法启用的事务不仅对普通sql查询有效,对Eloquent...查看日志记录 查看请求执行的sql日志记录,需要先执行enableQueryLog开启,然后执行getQueryLog获取 DB::connection()->enableQueryLog(); $queries

    6.3K30

    如何扩展Laravel Auth来满足项目需求

    之前写过两篇文章分别介绍了Laravel Auth认证系统的构成和实现细节知道了Laravel是如何应用看守器和用户提供器来进行用户认证的,但是在现实工作中大部分时候产品用户体系是早就有的这种情况下就无法使用框架自带的...,下面我们就通过实例看看应该如何扩展Laravel的用户认证系统让它能够满足我们项目的认证需求。...function retrieveByCredentials(array $credentials) { if (empty($credentials) || (count...$token); return $response; } ... } } 通过上面的例子我们讲解了如何通过自定义认证看守器和用户提供器扩展Laravel...的用户认证系统,目的是让大家对Laravel的用户认证系统有一个更好的理解知道在Laravel系统默认自带的用户认证方式无法满足我们的需求时如何通过自定义这两个组件来扩展功能完成我们项目自己的认证需求。

    2.7K20

    Laravel 框架入门

    四、Laravel 核心概念与功能接下来,我们将详细讲解一些 Laravel 的核心功能,并通过实际代码展示如何使用这些功能。1....路由与控制器Laravel 的路由是应用的入口,用来定义 URL 和处理请求的控制器。通过路由,你可以将请求映射到控制器中的方法。...;});这段代码定义了一个简单的路由,当用户访问根目录时,会返回 Hello, Laravel!。使用控制器处理请求我们可以将逻辑从路由中提取到控制器。...数据库与 Eloquent ORMLaravel 内置了一个强大的 ORM(对象关系映射)工具,叫做 Eloquent,它简化了数据库的操作。...中间件Laravel 提供了中间件(Middleware)功能,允许你在请求进入应用之前或响应发送之前,执行一些逻辑,比如认证、日志记录、输入验证等。

    14100

    一种 Laravel 中简单设置多态关系模型别名的方式

    作为 Laravel 的重度使用者肯定都对多态关系不陌生,以官方文档为例,文章有标签,视频有标签,那么文章和视频这些模型与标签模型的关系就是多态多对多(Many To Many (Polymorphic...))[1] 如果我们给 ID 为 1 的文章打上两个标签,数据库标签关系表的的存储结果就是这样子: > select * from taggables; +--------+-------------+...'App\Post', 'videos' => 'App\Video', ]); https://laravel.com/docs/6.x/eloquent-relationships#custom-polymorphic-types...使用 trait 来解决这类特性需求都是再适合不过了,如果你对 trait 还不太熟悉,可以阅读我之前的文章:《我所理解的 PHP Trait》[2] 我们的目标是使用表名来做为关系类别名,那么在模型中如何获取表名呢...References [1] 多态多对多(Many To Many (Polymorphic)): https://laravel.com/docs/6.x/eloquent-relationships

    2.7K10

    掌握 Laravel 的测试方法

    继而,讲解如何在 Laravel 项目中创建「单元测试」和「功能测试」用例。...例如,我们可以为包含如下步骤的登录功能实现一个功能测试用例: 发起一个访问登录页面的 GET 请求; 判断我们是否处在登录页面; 生成用于采用 POST 请求方式登录的登录数据; 判断是否创建登录会话数据成功...这就是应该如何创建「功能测试」用例的秘密。接下来我们将创建具体的测试用例,来讲解如何在 Laravel 中使用「单元测试」和「功能测试」。...以上就是如何在 Laravel 中使用单元测试的使用方法。 功能测试 这一节我们将学习如何创建功能测试用例来对先前创建的控制器进行「功能测试」。...id=1 URI 的 GET 请求,并通过 $response 变量接收响应。 然后,我们去匹配请求响应的状态码是否为 200。在我们的测试用例中的这个 GET 请求响应状态码应该是 200。

    5.7K10

    Laravel 5 系列入门教程(一)【最适合中国人的 Laravel 教程】

    跟随本教程走完一遍,你将会得到一个基础的包含登录的简单 blog 系统,并将学会如何使用一些强大的 Laravel 插件和 composer 包(Laravel 插件也是 composer 包)。...用开发者工具查看,这个请求的状态码是 500,为什么? 因为 `learnlaravel5/storage` 目录没有 777 权限。...模型 Models 接下来我们将接触Laravel最为强大的部分,Eloquent ORM,真正提高生产力的地方,借用库克的一句话:鹅妹子英!...Eloquent 提供的 Model 类 `Illuminate\Database\Eloquent\Model`,且都在 `\App` 命名空间下。...如果你想深入地了解 Eloquent,可以阅读系列文章:深入理解 Laravel Eloquent(一)——基本概念及用法 ---- 接下来进行 Article 和 Page 类对应的 articles

    3.5K20

    3分钟短文 | Laravel SQL筛选两个日期之间的记录,怎么写?

    引言 今天说一个细分的需求,在模型中,或者使用laravel提供的 Eloquent ORM 功能,构造查询语句时,返回位于两个指定的日期之间的条目。应该怎么写? 本文通过几个例子,为大家梳理一下。...然后调用模型的 where 查询语句: $reservations = Reservation::where('reservation_from', $now)->get(); 上一条生成的SQL语句如下: select...如何实现在 from 和 to 之间的日期呢,类似下面这样: SELECT * FROM table_name WHERE reservation_from BETWEEN '$from' AND '$...to 在laravel中你可以使用 whereBetween 这个查询子句。...当然了,上面的方法是在SQL中直接进行筛选,如果查询结果限制的条目本身比较少,也能充分利用索引,所以不担心查询的速度,那么我们可以在查询完成后,在返回的 Eloquent Collection 集合上,

    3.3K10

    3分钟短文 | Laravel 查询结果检查是不是空,5个方法你别用错!

    引言 Laravel 提供了 Eloquent ORM 对象用于操作数据库,将其进行抽象方便操作。 ?...因为设计的灵活度,大家在使用Model查询数据集的时候,会面临结果为空,记录不存在的问题, 那么如何有效地判断查询记录为空呢?本文就带大家深入了解一下。...学习时间 比如有一个请求参数 email,传递邮箱号,现在要在数据库表中查找该邮箱对应的用户记录。...如果要获取数据集,需要调用Model类的 get 方法,或者使用 Eloquent Collection 集合类的 first 方法, 才能获取到数据对象模型,或集合。 那么如何对所得结果判空呢?...比如这样: if (User::where('email', '=', Input::get('email'))->count() > 0) { // 有结果 } 如果对返回的条目数不在意,使用mysql

    86810

    orm 系列 之 Eloquent演化历程2

    本文是orm系列的第三篇,也是Eloquent演化的第二篇,Eloquent系列会尝试着讲清楚Eloquent是如何一步一步演化到目前功能强大的版本的,但是毕竟个人能力有限,不可能分析的非常完善,总会有不懂的地方...; $blueprint->string('email'); $statements = $blueprint->toSql($grammar); 此时返回的$statements是一个array,有count...本文最后讲下Eloquent中新增的对象之间的关系:多态关系,以下内容摘自[ Laravel 5.3 文档 ] Eloquent ORM —— 关联关系 表结构 多态关联允许一个模型在单个关联下属于多个不同模型...Manager,记得网上搜索过关键字Using Eloquent outside Laravel,我们可以看到一篇Vivek Kumar Bansal写的文章,文章从2方面介绍了怎么使用Eloquent...参考 [ Laravel 5.3 文档 ] Eloquent ORM —— 关联关系

    2.4K30
    领券