在 Laravel 5 中合并 'with' 和 'whereHas'

2024-06-26

我在 Laravel 5 中使用 Eloquent 编写了这段代码,它工作得很好:

$filterTask = function($query) use ($id) {
    $query->where('taskid', $id);
};

User::whereHas('submissions', $filterTask)->with(['submissions' => $filterTask])->get();

基本上,目标是仅获取那些经过过滤的提交内容的用户,其中包含其中的任何内容。 然而,同时运行这两个似乎很浪费whereHas and with具有相同回调函数的方法。有没有办法简化它?

Thanks.


就性能而言,您无法真正优化这里的任何内容(除非您要从雄辩关系转向联接)。有还是没有whereHas,将运行两个查询。一种用于选择所有用户,另一种用于加载相关模型。当您添加whereHas条件是添加了一个子查询,但仍然是两个查询。

然而,从语法上讲,你可以通过添加一个来优化它查询范围 http://laravel.com/docs/5.0/eloquent#query-scopes到您的模型(如果您想更频繁地使用它,甚至是基本模型):

public function scopeWithAndWhereHas($query, $relation, $constraint){
    return $query->whereHas($relation, $constraint)
                 ->with([$relation => $constraint]);
}

Usage:

User::withAndWhereHas('submissions', function($query) use ($id){
    $query->where('taskid', $id);
})->get();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Laravel 5 中合并 'with' 和 'whereHas' 的相关文章

  • 如何在 Mac v 10.7.2 上安装/使用 php

    我是对使用 PHP 感兴趣的普通大学生 谁能告诉我 101 如何使用简单明了的语言在 mac 版本 10 7 2 上安装 启用它 我将感谢任何和所有的帮助 Cheers 无需安装 PHP 或 Apache 它们已随 Mac 10 7 一起提
  • 如何用PHP显示分层的“NESTED SET”数据?

    我试图弄清楚如何使用 php 显示嵌套的 MySQL 数据 我已经设法搁置所有 叶节点 但后来我陷入困境 我需要显示一整棵树及其所有元素的关系 这是表格 category id name lft rgt 1 Saws 1 12 2 Chai
  • 无限滚动启用(wordpress)

    因此 我发现本教程可以启用无限滚动 http wptheming com 2012 03 infinite scroll to wordpress theme http wptheming com 2012 03 infinite scro
  • 基本的php问题。添加 javascript 到 .php 页面

    嗨 我不是 php 开发人员 我以前从未接触过它 但我被要求向网站添加谷歌购物车跟踪代码 当有人完成订单时 将被发送到 finishorder php 当我转到 finishorder php 文件时 它看起来像这样 include dir
  • IOS 向特定用户推送通知?

    是否可以向特定设备发送 iOS 推送通知 我构建了一个论坛类型的应用程序 用户可以创建问题 其他人可以回答它 我需要向提出问题的特定用户发送 iOS 推送通知 通知他们问题已得到解答 这可以通过 PHP 或其他方法来完成吗 是的 您绝对可以
  • 当用户单击链接时如何在表中创建新字段

    我的表格如下图所示 In order to insert data from this form into table I coded this supplier info supplier name POST supplier name
  • 如何在会话过期后自动更新数据库而不刷新我的页面

    您需要刷新或单击该代码 然后它才会转到索引页面 并且在会话过期后更新数据库之前 如何让会话过期后自动更新数据库 使用户活跃度为0 而无需刷新或点击页面 idletime 3600 after 1hr the user gets logged
  • WordPress、PHP、URL 编码问题

    Wordpress 提供了一个名为 the permalink 的函数 您猜对了 在帖子循环中返回给定帖子的永久链接 我正在尝试对该永久链接进行 URL 编码 当我执行此代码时 它以 HTML 形式生成以下结果 http
  • 检查 Laravel 模型是否已保存或查询是否已执行

    我见过很多人使用这种方式来检查 Laravel 模型是否已保存 所以现在我想知道这是否是一种安全的方法 我还可以检查下面的查询是否像这样执行 检查模型是否已保存 Eg myModel new User myModel gt firstnam
  • 防止我的 PHP 网络爬虫停止运行

    我正在使用 PHPCrawl 类并添加了一些 DOMDocument 和 DOMXpath 代码来从网页中获取特定数据 但是脚本在接近爬行整个网站之前就停止了 我已将 set time limit 设置为 100000000 因此这不应该成
  • Monolog - 仅记录特定级别的错误

    我在普通 PHP 应用程序中使用 Monolog 我只想记录特定级别的错误 INFO 和不高于 因为我还有其他处理程序 这是我的代码
  • 更改二维数组每一行中的键而不丢失值

    我有一个行数组 其中一个 视觉 数据列有两个相似但不同的键 我想替换其中一个键 以便该列在所有行中具有相同的键 我的输入数组 Ttitle gt lilly Price gt 1 75 Number gt 3 Title gt rose P
  • 数据库记录的多级菜单

    我需要一些有关 PHP 的帮助 我有一个工作正常的多级 css 菜单 但现在我想根据数据库中的记录生成 菜单代码 div ul class dropdown li a href Link 1 a li li a href Link 2 a
  • 将我的 JSON 字符串格式化为 PHP 中的
      有序列表

    我正在为一个宠物项目开发一个简单的 CMS 我目前有一个 JSON 字符串 其中包含菜单结构的页面 ID 和父页面 ID 的列表 我现在想将此字符串转换为嵌套或分层列表 有序列表 我尝试过循环查找 但似乎最终得到了过于复杂的子类范围 我正在
  • Laravel 4 类如何检测它是在 Artisan 任务中运行还是在浏览器请求中运行?

    我有一些应用程序启动代码 需要知道它当前是在 artisan 任务中运行还是在浏览器请求中调用 我如何在 Laravel 4 中检测到这一点 这是最好的方法 if App runningInConsole echo Running in a
  • 在 PHP 中,如何检查函数是否存在?

    如何检查该功能是否可用my functionPHP 中已经存在 Using function exists http php net function exists if function exists my function my fun
  • 停止警告:date() [function.date]:来自本地主机

    警告 date function date 依赖系统的时区设置是不安全的 你是required使用 date timezone 设置或 date default timezone set 函数 如果您使用任何这些方法并且仍然收到此警告 则很
  • SQLite适合并发读吗?

    在没有锁定的情况下 SQLite 数据库的性能是否能达到每秒 50 次读取左右 我正在尝试确定它是否可以在不会经常 写入 的 PHP 网站上使用 它主要是从一小部分表中读取相同的数据 没问题 并发读 写实际上会被 SQLite 序列化 所以
  • 是否可以倒回 PDO 结果?

    我正在尝试为 PDO 语句的结果编写一个迭代器 但找不到任何回退到第一行的方法 我想避免调用 fetchAll 和存储所有结果数据的开销 first loop works fine foreach statement as result d
  • PHP SFTP 简单文件上传

    我正在使用 phpseclib SFTP 类 并尝试上传这样的文件 sftp new Net SFTP mydomain com if sftp gt login user password exit Login Failed sftp g

随机推荐

  • AFNetworking 的 UICollectionView 异步下载错误

    您好 我正在使用目录列表创建 Uicollection 视图 点击单元格时必须下载 PDF 它在一个视图中完美运行 但在另一个视图中出现错误 thread 1 tid 0x4b2ce 0x000000018d14f9b8 CoreFound
  • 为什么 NodeJS 不支持 String.prototype.replaceAll?

    这个字符串方法存在于 browserland 中 但不存在于 Node 中 为什么不 它既不是全新的 也不是异国情调的 replaceAll is part of ECMA 262 src https tc39 es ecma262 sec
  • 如何在响应式设计中禁用缩放功能?

    在使用 iPad iPhone 和 或其他智能手机时 如何禁用响应式设计页面中的放大和缩小功能 有什么办法可以控制吗 创建 META 视口标签 并设置用户可扩展属性为 否 如下所示 更新的答案
  • 运行 Fiddler 作为 HTTPS 服务器的反向代理

    我有以下情况 2台主机 一台是客户端 另一台是HTTPS服务器 Client
  • 确定文件是否打开

    有什么方法可以确定文件是否被任何包括不锁定文件的应用程序 如记事本 打开 我需要检测给定文件 myfile txt 何时不再在包括记事本在内的任何应用程序中打开 因此我无法使用具有独占访问权限的 File Open 进行测试 因为该文件没有
  • OpenAPI 查询参数描述未设置为文本框作为占位符

    我已经使用描述来添加查询参数的详细信息 例如 parameters name role in query required true schema type string description This is test descripti
  • PHP 和 ESB(使用 Mule)(ESB:企业服务总线)

    您在 PHP 项目中何时 何地以及为何使用 ESB 您认为在何处 何时以及为何在 PHP 项目中使用 ESB 有意义 ESB 以及像 Mule 这样的 ESB 促进者 是否提供了 PHP 和本地 LAMP 技术所缺乏的任何功能 Edit 我
  • Android AsyncTask 启动另一个 AsyncTask

    我目前正在 AsyncTask 的 onPostExecute 方法中执行类似的操作 其中NewTask is not当前正在执行的任务 private class OlderTask extends AsyncTask
  • 如何在 PHP 中识别请求的页面

    有没有简单的方法来识别最初处理请求的文件 忽略获取参数并处理 至少是基本的 映射 例如 to index php 理想情况下 我正在寻找类似的东西 SERVER REQUEST URI 但无论 get 参数如何 它都会返回相同的值 并且该值
  • 如何使用 selenium 和 junit 测试多个浏览器(版本)

    我刚刚发现了硒 一个很棒的工具 我计划运行 使用 selenium ide 生成的 junit4 代码 但我需要它与许多浏览器 网络驱动程序一起运行 这个用例有 junit java 模式吗 我的第一个想法是使用 RunWith Param
  • 特征/类类型参数优先于方法类型参数的规则是什么

    我已经使用 scala 一段时间了 我认为我真的开始理解一切 好吧 大多数事情 但我发现自己对 Map 类中的许多方法定义感到困惑 我知道 FoldLeft 等如何工作 但我感到困惑的是 Map 函数中使用的类型参数 我们以 FoldLef
  • 如何使用 .Net (C#) 在 Windows 中安全地存储 AES 密钥?

    我一直在寻找一种方法来存储给定的 AES 密钥 以便无法检索它 但它仍然可以用于加密和解密 使用 C 我认为可以找到非对称密钥存储的等效项here http msdn microsoft com en us library tswxhw92
  • 评估 R 中字符串指向的函数

    假设我有以下内容 x lt 1 10 squared lt function x x 2 y lt squared 我希望能够使用 y 定义的字符串来评估该函数 像 eval y 这样的东西 我知道这是错误的 但会返回 1 1 4 9 16
  • Ruby IMAP 库:如何显示文件夹中的所有邮件?

    我需要一个脚本来获取所有文件夹中的所有电子邮件 并对其及其附件进行本地备份 here https www ombulabs com blog ruby imap a comprehensive guide to interacting wi
  • 基于 Accept-Language 的重定向

    我需要尊重网络浏览器的语言首选项列表 支持的语言为英语和法语 例如 http accept language jp JP fr en US en 重定向到名为 French 的目录 如何使用 htaccess 文件中的重写规则来做到这一点
  • 如何从 tarantool 中选择有限数量的记录,就像 SQL 中的 SELECT LIMIT 一样?

    我想在 Tarantool 空间上执行选择 使用过滤和限制结果 就像我可以使用简单的 SQL 查询一样 SELECT FROM users WHERE age gt 33 LIMIT 1 我怎样才能做到这一点 可以使用 Lua 和 SQL
  • Oracle 函数编译成功,但在执行 PLS-00221 时抛出错误:不是过程或未定义

    我有简单的oracle功能 create or replace function abs test func test in in number return number is test out number BEGIN test out
  • JavaScript 设置滚动高度

    在 JavaScript 中 将一个元素的滚动高度设置为另一个元素的滚动高度的正确方法是什么 直接赋值没有效果 谢谢 格雷格 直接是不可能的 scrollHeight 是一个只读属性 包含元素内容的总高度 以像素为单位 如果有元素 A 并且
  • CA随机3色

    是否存在随机元胞自动机规则 如规则 30 且具有 3 种颜色 这实际上是一个研究问题 您必须对发现的元胞自动机 CA 规则进行统计测试 以证明它是随机的 如果您想做这样的研究项目 请查看Wolfram 科学暑期学校 http www wol
  • 在 Laravel 5 中合并 'with' 和 'whereHas'

    我在 Laravel 5 中使用 Eloquent 编写了这段代码 它工作得很好 filterTask function query use id query gt where taskid id User whereHas submiss