热切加载:在具有雄辩关系的枢轴上使用“with”

2024-02-12

有4张表:

  • bundles: 身份证号、姓名
  • products: 身份证号、姓名
  • prices: 身份证号、姓名
  • bundle_product:id、bundle_id、product_id、price_id

有3种型号:

  • Bundle
  • Product
  • Price

A Product has a Price当在一个Bundle。我想拥有一切bundles与他们相关的products 以及相关的prices.我可以获得所有捆绑包及其产品和价格 ID:

// I created a Bundle Model with a products method
class Bundle extends Model
{
    public function products()
    {
        return $this->belongsToMany(Product::class)->withPivot('price_id');
    }
}

// Then I call this in a controller
$all_bundles = Bundle::with('products')->get();

// Then I can get the price Id of the first product of the first bundle
$price_id = Bundle::with('products')->first()
    ->products()->first()
    ->pivot->price_id;

但我不想要price id, 我想要价格 型号。有没有办法从枢轴预加载价格(使用预加载)?


当前接受的答案偏离了原始数据结构。 我创建了一个包,它可以帮助您实现您想要的,并且它还保留了原始的数据结构。请在这里阅读我的媒体故事:https://medium.com/@ajcastro29/laravel-eloquent-eager-load-pivot-relations-dba579f3fd3a https://medium.com/@ajcastro29/laravel-eloquent-eager-load-pivot-relations-dba579f3fd3a

首先,根据您的情况创建自定义枢轴模型并定义枢轴模型上的关系:

use Illuminate\Database\Eloquent\Relations\Pivot;

class BundleProduct extends Pivot
{
    public function price()
    {
        return $this->belongsTo(Price::class);
    }
}

然后在关系中使用枢轴模型:

class Bundle extends Model
{
    public function products()
    {
        return $this->belongsToMany(Product::class)
        ->withPivot('price_id') // this is needed to query the relation `price`
        ->using(BundleProduct::class);
    }
}

确保你使用了这个特质AjCastro\EagerLoadPivotRelations\EagerLoadPivotTrait in the Product模型,因为它是belongsToMany关系中的相关模型。这让我们能够立即加载枢轴关系。

use AjCastro\EagerLoadPivotRelations\EagerLoadPivotTrait;

class Product extends Model 
{
  use EagerLoadPivotTrait;
}

然后像这样急切地加载它:

$bundle = Bundle::with('products.pivot.price')->first();
$price = $bundle->products->first()->pivot->price;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

热切加载:在具有雄辩关系的枢轴上使用“with” 的相关文章

  • 使用 PHPSpreadsheet 打开受密码保护的 XLSX 文件

    我正在尝试打开受密码保护的 Excel 文件 xlsx PHP电子表格 https github com PHPOffice PhpSpreadsheet 文档 https phpspreadsheet readthedocs io en
  • 如何用PHP进行有向图绘制?

    我正在寻找一种在 PHP 中绘制有向图的方法 如http upload wikimedia org wikipedia commons 0 08 Directed acirclic graph png http upload wikimed
  • 如何在 Windows 上安装 PHP 的 PDO 驱动程序?

    我在 Windows 服务器上安装了 Apache PHP 5 6 和 MySQL 5 7 在 php ini 中 我启用了以下内容 extension php mysql dll extension php mysqli dll exte
  • 使用factory faker创建的图像在存储在storage/public/images文件夹中时会被删除

    我正在尝试用假图像填充我的数据库 但是当 faker 将其保存到我的图像文件夹中时 一秒钟后它被删除 并且在我的数据库字段中我得到 0 我可以访问http lorempixel com http lorempixel com 也可以 pin
  • 对对象数组进行排序

    我在使用 PHP 手册中的示例时遇到了问题 所以我想在这里问这个 我有一个对象数组 有没有办法根据对象的内容对其进行排序 例如我的数组是 Array 0 gt stdClass Object id gt 123 alias gt mike
  • 如何使用 Laravel Collective 在表单标签中包含 html?

    通读一遍这个所以线程 https stackoverflow com questions 24361160 radio and checkbox inside label with laravel我读到我可以创建一个新的宏来创建自定义表单输
  • 登录后,Codeigniter 会话数据在其他页面不可用

    因此 我设置了一个登录页面来验证用户的凭据 然后设置 codeigniter 会话数据 email 和 is logged in 以及其他一些项目 登录后第一页 数据即可访问 在该页面之后 我无法再访问会话数据 事实上 如果我尝试重新加载第
  • PDO::commit 之后使用 PDOStatement::rowCount 结果?

    在 MySQL 文档中 有一个关于使用的注释mysql affected rows事务提交后 http php net manual en function mysql affected rows php http php net manu
  • 如何使用 PHP 更改文件的标题属性

    用户使用我的 PHP 应用程序上传 PDF 文件 我将它们存储在 S3 上 稍后 其他用户会查看这些文件 我会在他们的浏览器中 内联 显示这些文件 问题在于 PDF 的 标题 属性显示在通常显示网站标题的浏览器选项卡中 由于它是由原始上传的
  • 如何使用 php 处理传出 webhook (Slack)

    我已经配置了 Slack outgoing webhook 但我不确定如何处理 Slack 发送到我指定的 URL 的 HTTP POST 请求 工作流程是这样的 当有人向指定通道发送消息时 API 将向指定 URL 之一发送 HTTP P
  • PHP显示图片从url到主页

    在没有人回答这个问题之后Php Rss feed 在 CDATA gt content encoded 中使用 img https stackoverflow com questions 31771729 php rss feed use
  • Oracle/PHP - ORA-00911 更新时的无效字符

    我正在运行一个 PHP 脚本 该脚本从 Oracle 数据库实例更新表 首先 我收到一个 JSON 对象 lot KLMHA17N9N00 requestor B10078 id FRESHLOT username B26696 passw
  • PHP:file_get_contents 与 json_decode 不能一起工作

    使用 file get contents 读取 json 文件后遇到问题 当我运行这段代码时 它工作正常
  • PHP - 发送带有附件的电子邮件不显示消息内容

    尝试创建一个脚本 我可以在其中发送带有附件的电子邮件 一切正常 除了当我不在电子邮件中添加文件时 我仍然可以看到带有 0B 且没有名称的附件 if isset POST my send email to POST my email to r
  • 基本的 simpleXML 工作示例?

    看起来 PHP 中的 simpleXML 有很多问题 我在 Windows 上运行最新版本的 php 但无法让 simpleXML 的基本示例按照文档中的方式工作 我的 xml 文件是
  • php包含来自另一个目录的文件

    这是一个结构示例 main css style css include article1 php article2 php header php index php 在我的 header php 中 我有以下 css 代码 例如 在我的 i
  • zend 模块特定配置问题

    我使用 zend 框架构建 REST Web 服务 并且使用模块来分隔我的 api 版本 现在 我想为每个模块 v1 和 v2 都有一个单独的配置文件 主要用于指定单独的数据库连接 我有这样的目录结构 application modules
  • Zend Framework 2 将变量传递给模型

    我目前正在开发一个多语言网站 对于多语言部分 我使用翻译器 poedit 我将所选语言存储在会话中 效果很好 模块 php public function onBootstrap MvcEvent e session new Contain
  • 选择MySql表数据放入数组中

    我尝试从 mysql 捕获数据并将它们全部放入数组中 认为 users table id name code 1 gorge 2132 2 flix ksd02 3 jasmen skaod2 sql mysql query select
  • PHP邮件功能有时可以工作

    我正在编写一个脚本 需要通过PHP邮件功能发送电子邮件 如下所示 它在向 gmail 帐户发送电子邮件时有效 但在我的域中的帐户却无效 我们正在运行 Exchange 服务器 截至目前 电子邮件是从 www server 发送的 有谁知道

随机推荐

  • Android Scrollview 具有 videoview 会出现问题

    我有一个位于滚动视图内的视频视图 当我滚动滚动视图时 视频视图不会随之滚动 就好像它的位置是固定的一样 这是我的布局
  • 如何从 C# 中的 URL 下载文件?

    从 URL 路径下载文件的简单方法是什么 using var client new WebClient client DownloadFile http example com file song a mpeg a mpeg
  • 量角器需要密码才能登录 => 不安全?

    我开始使用 Protractor 进行 e2e 测试 要测试某些页面 我首先需要登录 现在我有这部分用于输入密码 var passInput element by id Passwd passInput sendKeys test 现在 当
  • 如何获取 eq() 值?

    这可能吗 为了让我得到eq 价值 例如 如果我单击li eq 2 var x会变成2 这是代码 numbers ul li click function x this eq val alert x The index what is thi
  • 从 Uri 转换位图返回 null [重复]

    这个问题在这里已经有答案了 在我的 Android 应用程序中 我使用 Google 驱动器来选择图像和文件 对于文件 我的代码在大多数情况下都运行良好 不幸的是 在某些情况下图像导入不起作用 图像位图返回空值 下面是我用来将内容 URI
  • 我们如何处理 BDD 场景的微小排列?

    我喜欢 BDD 开发方法 但我遇到了一个问题 即该方法能走多远 这条来自 ThoughtWorks 的最新评论Radar http thoughtworks fileburst com assets thoughtworks tech ra
  • 使用 Guice AOP 在 Jersey 中进行方法拦截

    是否可以使用 Guice AOP 拦截 Jersey 资源上的带注释的方法 我已经成功配置了 Guice 与 Jersey 的依赖注入集成 没有任何问题 但是我配置的拦截器根本没有拦截我带注释的方法 web xml
  • 在 Bootstrap 3 的弹出窗口中放置一个表单? [复制]

    这个问题在这里已经有答案了 如何在 Bootstrap 3 中的弹出窗口中放置表单 a href class btn btn lg btn danger title Click It a 它给出了如下效果 我想在它的体内放置一个形式 我们怎
  • Rails 与非 Rails 数据库设计

    完全新手研究 Rails Rails 是否可以与不符合 Rails 默认命名和设计约定的只读模式一起使用 例如 我的数据库架构具有使用字符串列作为唯一主键的基表 例如 名为 Jobs 的基表可能具有定义为 Jobs Job 的唯一主键 并且
  • IntelliJ Idea - 在调试器中搜索值

    我需要知道是否可以在 IntelliJ Idea 的调试器中搜索值 示例 您有一个巨大的对象树 您需要找到设置为相同特定值的字符串变量 有什么办法可以做到这一点吗 展开此树以便您可以看到所有这些字符串 然后开始输入您要搜索的内容 快速搜索应
  • 在嵌套片段中使用 OptionsMenu

    我使用在我的主机活动中实现的 NavigationDrawer 模式菜单活动 我的导航有 3 个项目 项目 1 项目 2 项目 3 每个项目都绑定到一个片段 当我单击 Item 1 时 我显示了一个片段 A 它实现了具有多个片段 嵌套片段
  • 访问抽象类 (Scala) 中构造函数创建的字段

    我有一个实现一种方法的抽象类 我如何访问参数internalValue 由抽象类构造函数设置 abstract class Value internalValue Int def equal v Value Boolean def notE
  • 如何查询以二进制形式存储在数据库中的 UUID(JPA/Hibernate/MySQL)

    我有一个基于 Java JPA Hibernate MySQL 的应用程序 我想使用 UUID 进行对象标识 但我想确保数据库性能不会受到影响 我发现了这篇很棒的博客文章JPA 和 UUID 主键 http www thebinaryidi
  • 如何在ag-grid中动态设置行高和列宽

    我已经使用它来尝试适应列和行的宽度 如何在ag grid中动态设置行高和列宽 请在typescript中提供git hub代码 我假设您想根据行的内容设置行高 步骤 1 将 getRowHeight 属性设置为 JavaScript 函数
  • 在编译时强制存在无参构造函数 (Java)

    我有一堂课有点像这样 public class Test private final List
  • 即使在应用程序中设置核心,Spark UI 也显示 0 核心

    我在运行 Spark Master url 之外的应用程序时遇到了一个奇怪的问题 其中 UI 无限期地报告 等待 的 状态 因为无论我将核心计数配置为什么 正在运行的应用程序 表下都会显示 0 个核心是 我已经使用以下设置配置了我的应用程序
  • 获取 macOS 上当前用户的桌面路径

    I use NSArray paths NSSearchPathForDirectoriesInDomains NSDesktopDirectory NSUserDomainMask YES NSString theDesktopPath
  • Maven Jetty 垃圾邮件警告“从多个位置扫描”

    我发现了类似的问题here https stackoverflow com questions 50190689 maven scanned from multiple locations type of warnings 但它指向一个我没
  • 如何暂时禁用 Coq 中的符号

    当您熟悉项目时 符号很方便 但当您刚刚开始使用代码库时 符号可能会令人困惑 我知道你可以用白话关闭所有符号Set Printing All 但是 我想保留一些打印 例如隐式参数 全部打印如下 Require Import Utf8 core
  • 热切加载:在具有雄辩关系的枢轴上使用“with”

    有4张表 bundles 身份证号 姓名 products 身份证号 姓名 prices 身份证号 姓名 bundle product id bundle id product id price id 有3种型号 Bundle Produc