使用查询范围热切加载相关模型

2024-03-02

说我有一个模型Box其中包含许多小部件。小部件可以是活动的或非活动的(布尔值)。这Widget模型有一个可以过滤结果的查询范围:

模型/box.php:

class Box extends Eloquent
{
    public function widgets()
    {
        return $this->hasMany('Widget');
    }
}

模型/widget.php:

class Widget extends Eloquent {

    public function box()
    {
        return $this->belongsTo('Box');
    }

    public function scopeActive($query)
    {
        return $query->whereActive(true);
    }
}

查询范围可以轻松获取给定框的所有小部件:

$box_widgets = Box::find($box_id)->widgets()->active()->get(); 
// returns an Eloquent\Collection containing a filtered array of widgets

但我该如何使用scopeActive消除这种急切的加载with方法的条件函数?

$boxes = Box::with(array('widgets', function ($q)
{
    $q->active();
}))->get();

似乎可能有一个访问关系范围的简写,比如Box::with('widgets->active') or Box::with('widgets.active')但我一直没能找到它。


假设大多数时候您只需要活动的小部件,所以我建议:

public function widgets()
{
    return $this->hasMany('Widget')->whereActive(true);
}

public function widgetsDisabled()
{
    return $this->hasMany('Widget')->whereActive(false);
}

您可以设置更多,例如一次性加载所有内容,就像现在一样。

然后急切加载就这么简单:

Box::with('widgets')... // loads only active
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用查询范围热切加载相关模型 的相关文章

  • Laravel 中间件将变量返回给控制器

    我正在对用户进行权限检查 以确定他们是否可以查看页面 这涉及首先通过一些中间件传递请求 我遇到的问题是 在将数据返回到视图本身之前 我在中间件和控制器中复制相同的数据库查询 这是设置的示例 路线 php Route get pages id
  • 更改 Laravel auth 表名称和列名称

    我想更改 laravel auth 表的表名和一些列名 将表名称从 用户 更改为 帐户 将表列名称从 名称 更改为 用户名 将表列名称从 email 更改为 email addr 将表列名称从 updated at 更改为 last upd
  • Laravel Eloquent 更新(如果已进行更改)

    如果记录发生更改 是否有任何方法可以使用 eloquent 模型更新 Laravel 中的记录 我不希望任何用户无缘无故地一遍又一遍地请求数据库 只需点击按钮即可保存更改 我有一个javascript根据页面中是否发生更改来启用和禁用保存按
  • 我如何加入 Eloquent:关系?

    我的查询是这样的
  • 使用 nuxtjs 登录 laravel sainttum 后出现 401(未经身份验证)错误

    我已经安装了 laravel v 7 30 4 nuxtjs v 2 15 7 当我使用 nuxtjs auth 模块登录我的 laravel sainttum 后 当 nuxt 尝试获取用户时 laravel 响应 401 错误 未经身份
  • 将资源文件链接到 Laravel4 中的视图

    您好 我是新手 正在学习 laravel 4 创建应用程序 我正在尝试使用 laravel Blade 将 twitter bootstrap3 文件链接到视图 我安装了一个新的 laravel 应用程序文件夹 为了从 url 路径中删除
  • Laravel Valet 不工作。 127.0.0.1 连接被拒绝

    试图让代客泊车设置正常工作 当访问 127 0 0 1 时 连接被拒绝 这是我在访问 dev 站点设置之一时收到的消息 我已经确保 apache 已停止 并且一直在谷歌上搜索所有地方 但无法找到解决方案 有没有人遇到过这个或对下一步尝试什么
  • barryvdh/laravel-dompdf:- fopen 无法打开流:laravel 5.7 中没有这样的文件或目录

    当我想下载发票 pdf 时出现错误 fopen project path storage fonts 071ddd89a9cb147bf5639344caee3fe8 ufm 无法打开流 没有这样的文件或目录 在此输入图像描述 https
  • 简单来说,Laravel IoC 容器是什么?

    谁能用简单易懂的语言解释依赖注入和 IoC 容器 因为我是 Laravel 的初学者 谢谢 答案变得比我最初想要的要长 我提供了一些背景信息 不过 如果您正在寻找短期解释 请阅读 IoC 容器的第一段和粗体段落 依赖注入 依赖注入是一种设计
  • Laravel 5:在控制台内核的 Schedule() 函数中使用 Cache:: 或 DB::

    我正在尝试以不同的用户配置的时间间隔在 Laravel 5 中运行 Artisan 控制台命令 我已经构建了控制台命令 并拥有一个包含 运行频率 配置值的数据库 具有 Eloquent 模型 内schedule 的函数App Console
  • 使用 Laravel Socialite 登录 facebook

    然而 我是 Laravel 的新手 我正在遵循以下教程http www codeanchor net blog complete laravel socialite tutorial http www codeanchor net blog
  • 将我的 Laravel 连接到外部数据库

    如何将 Laravel 连接到外部数据库 示例 我的本地计算机上有一个 Laravel 它在 xampp 上运行 我希望它连接到云服务器数据库 打开 env文件并编辑它 只需设置正确的外部数据库凭据 DB CONNECTION mysql
  • 如何在 Laravel 视图中找到当前语言?

    我正在使用 Laravel Lang 类来本地化我的网络应用程序 我已将两种语言添加到语言数组中application config application php 这会将用于本地化的默认语言更改为 URI 第一部分指示的任何内容 例如 b
  • Laravel 5 命名约定

    我对 Laravel 约定有点困惑 因为我是这个框架的新手 我正在关注 Jeffrey Way 他使用的 Laracasts 视频Plural对于控制器名称 E g 页面控制器 卡片控制器 帖子控制器 但如果我参考官方文档Laravel g
  • Laravel 4 删除默认 getIndex 控制器函数上的 /index

    是否可以删除默认 getIndex Restful 控制器功能上的 index 控制器定义的路线 Route controller registration RegisterController array getIndex gt getR
  • 如何使用 monolog ElasticSearchHandler 登录 Laravel 应用程序

    Monolog 包含弹性搜索处理程序和格式化程序 但它作为自定义通道对 Laravel 的实现并不像 Laravel 文档网站上描述的那么简单 以下是如何执行此操作的简要分步说明 为您的弹性搜索日志记录创建一个配置文件 config ela
  • Laravel 验证:存在附加列条件 - 自定义验证规则

    在 Laravel 中指定存在验证规则时 是否有一种方法可以引用另一个字段 我希望能够说输入 a 必须存在于表 a 中 输入 b 必须存在于表 b 中 并且表 b 中列 x 的值必须等于输入 a 最好通过例子来解释 public rules
  • Laravel 5.4^ - 如何自定义通知电子邮件布局?

    我正在尝试自定义通过电子邮件发送通知时使用的 HTML 电子邮件布局 我已经发布了邮件和通知视图 php artisan vendor publish tag laravel mail php artisan vendor publish
  • Laravel 注册成功后如何重定向到上一页?

    现在redirectTo被设定为 home 我想知道如何重定向到上一页 我尝试使用 protected redirectTo URL previous 但我得到解析错误 期待 or 解决这个问题的最佳解决方案是什么 我想我需要重写 redi
  • Laravel 5 Eloquent 在多个级别上将关系附加到 JSON

    因此 在模型中包含关系非常容易 例如 class User extends Model protected with roles class Role extends Model protected with permissions 当有对

随机推荐

  • Postgres用户创建数据库

    我无法使用我的 postgres 客户端和我登录的用户创建数据库 我无法弄清楚如何增加用户的权限 我可以访问运行 postgres 的 Linux 服务器 并且能够使用 psql 以我的用户和 postgres 用户身份登录 有人可以告诉我
  • 为什么我使用 =(单个等于)的相等比较在 Java 中不能正常工作?

    我在以下行中遇到语法错误 但是我不明白这个错误的原因是什么 if address1 compareTo address2 1 System out println address1 is greater than address2 我想要实
  • iOS 7.1 问题 - 当触摸并拖动该选项卡按钮时,选项卡栏图标图像会自动调整大小

    我有这个代码 tabBarItem1 setFinishedSelectedImage UIImage imageNamed tab pressed home icon withFinishedUnselectedImage UIImage
  • 为什么 Android Studio 不会在发布模式下创建我的 AAR 文件

    使用 Android Studio 我有一个 Android 库项目 它在调试模式下生成 library build outputs aar MyLIB aar 但在发布模式下则不然 我没有看到任何错误 只是 构建成功 在 Gradle C
  • 在 Swift 中显示 GoogleMaps?

    我的代码 var camera GMSCameraPosition cameraWithLatitude currentLocation latitude longitude currentLocation longitude zoom 1
  • dir() 非常慢

    当文件较多时 4000个左右 dir 功能非常慢 我的猜测是它创建了一个结构并以低效的方式填充值 是否有任何快速而优雅的替代方法可以使用dir 更新 使用 MATLAB R2011a 在 64 位 Windows 7 中进行测试 更新 2
  • 如何将天蓝色磁盘恢复到以前的快照?

    我在天蓝色中有一个虚拟机 并通过门户选择了它的磁盘 并创建了它的快照 我现在如何恢复到磁盘快照 通过门户或 CLI 我不想从快照创建新磁盘或虚拟机 只是恢复回来 我现在如何恢复到磁盘的快照 通过门户或 命令行界面 您的意思是您想使用此快照来
  • 如何在 VScode 笔记本中激活跨单元格的单词突出显示?

    我在 Visual Studio Code 1 67 0 中使用 Jupyter ipynb 笔记本 当我双击某个单词 区域时 会突出显示该单词 区域的所有出现位置仅在同一个单元格中 对此的设置在settings json file is
  • Javadoc 在 Eclipse 中不可用

    我正在使用面向 Java 开发人员的 Eclipse IDE 版本 Helios 服务版本 2 内部版本号 20110218 0911 我有一个类似的问题堆栈溢出问题 https stackoverflow com questions 69
  • .data 在 pytorch 中还有用吗?

    我是 pytorch 的新手 我读了很多大量使用张量的 pytorch 代码 data成员 但我搜索 data在官方文档和Google中 发现很少 我猜 data包含张量中的数据 但我不知道什么时候需要它 什么时候不需要 data是一个属性
  • Java或C#中工厂设计模式的反思

    我偶然发现了一个词 叫做反思 这是工厂设计模式中常用的功能 我很难理解这个概念 因为我仍在学习如何编程 如何在 C 或 Java 的工厂设计模式中使用反射 谁能给我一个简单的例子 并向我展示您使用反射来实现工厂设计模式的代码 微软提供了这个
  • android 在相机上显示矩形

    您好 我想在相机中显示一个矩形 以便当用户拍摄快照时 只能处理矩形内的区域 知道我该怎么做吗 并且可以通过沿角拖动来调整矩形大小 我没有调用相机应用程序 我正在使用相机 API 您好 我使用本教程解决了问题 see here http ad
  • Android/Java:将任何字符串转换为颜色(十六进制)

    有没有办法像加密 哈希函数一样从 Java Android 中的任何字符串生成颜色 例子 字符串 Home 生成类似 FF1234 的颜色 字符串 Sky 生成类似 00CC33 的颜色 没有随机化 因此 系统将始终为该字符串计算相同的颜色
  • Azure eventhub 多个分区键指向同一分区

    我们正在开发一个多租户应用程序 其中 eventhub 将在不同租户之间共享 我们将在租户之间分配分区 每个租户将在不同的分区上发送消息 我们希望在分区级别对租户进行身份验证 正如 Microsoft 网站上所述 我们根据租户 ID 定义分
  • java swing布局两个组件

    A B
  • getaddrinfo:如果指定了节点名,AI_PASSIVE 以什么方式被忽略?

    引用自规格获取地址信息 http pubs opengroup org onlinepubs 009695399 functions freeaddrinfo html If the AI PASSIVE如果指定了标志 则返回的地址信息应适
  • 检查元素是否包含数组中的任何类

    我有以下要素 div class one two three four five six seven eight div div class one two three four five six seven eight ten div d
  • 如何防止不良项目引用?

    我们使用带有 TFS 的 C 项目作为源代码控制和 CI 构建 我不断发现其他开发人员正在引用来自的程序集 Bin当他们应该使用我们的目录时 目录不正确 Libs文件夹 我们保存第 3 方程序集的地方 作为解决方案构建或 CI 构建 我们也
  • 如何在 vim 中打开旧文件列表中的文件?

    在 vim 中 我可以输入 oldfiles查看我之前编辑过的文件列表 很棒的功能 但现在我想将该列表中的一个或多个文件打开到缓冲区中 我怎样才能做到这一点 一旦您位于列表底部 您应该按 并使用这个 奇怪 的符号发出命令 command l
  • 使用查询范围热切加载相关模型

    说我有一个模型Box其中包含许多小部件 小部件可以是活动的或非活动的 布尔值 这Widget模型有一个可以过滤结果的查询范围 模型 box php class Box extends Eloquent public function wid