Laravel 4 - 无法检索一对多关系中的数据

2023-12-08

我有一个报价模型:

class Quote extends Eloquent {

    public function quote_lines() {
        return $this->hasMany('QuoteLine');
    }    

}

还有一个 QuoteLine 模型:

class QuoteLine extends Eloquent {

    public function quote() {
        return $this->belongsTo('Quote');
    }

}

我的这个模型的表是 quote_lines。

Schema:

    Schema::create('quote_lines', function($table)
    {
        $table->increments('id');
        $table->integer('quote_id');
        $table->string('title');
        $table->string('desciption');
        $table->integer('quantity');
        $table->decimal('unit_price', 5, 2);
        $table->timestamps();
    });


    Schema::create('quotes', function($table)
    {
        $table->increments('id');
        $table->integer('contact_id');
        $table->integer('company_id');
        $table->timestamps();
    });

问题是我似乎无法从我的报价控制器访问报价行:

$quote_lines = Quote::find($id)->quote_lines;
dd($quote_lines);

只返回NULL


关系的方法名称必须采用正确的驼峰式大小写才能使用魔法属性。例如,为了使用,Quote::find($id)->quote_lines,该方法必须命名quoteLines()

请允许我解释一下:

Calling Quote::find($id)->quote_lines;激活 Eloquent 类中神奇的 __get 方法。 __get() 调用getAttribute($key)关于正在检索的财产。所以在这种情况下,它调用getAttribute('quote_lines')

如果键 (quote_lines) 在模型的属性数组中不可用,它将在类中搜索方法。它通过转换密钥来实现这一点camel_case()。 Laravel camelcase() 方法会将 quote_lines 转换为 quoteLines。然后,它在类中查找名为 quoteLines() 的函数,如果找到,则将其视为关系方法。

因此,关系方法必须写成 quoteLines。 (或任何适合驼峰式大小写的字符串)

public function quoteLines() {
  return $this->hasMany('QuoteLine');
}    

然后,您可以使用以下任一方式访问此关系Quote::find($id)->quote_lines or Quote::find($id)->quoteLines(当使用驼峰式格式时,'quote_lines' 和 'quoteLines' 都将被评估为 'quoteLines'。)

脚注:laravel 中的“驼峰式大小写”指的是这种形式的字符串:heyThereWorld。 第一个字母必须小写,所有后续单词的第一个字母必须大写

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

Laravel 4 - 无法检索一对多关系中的数据 的相关文章

  • 如何在 Laravel 中更改应用程序的命名空间?

    我无法在 Laravel 5 8 中更改应用程序的命名空间 我正在使用 artisan 来更改它 php artisan app name TestApp 结果是 中没有定义命令app 命名空间 看着php artisan你应该有一个php
  • updateExistingPivot() 不起作用

    我正在尝试像这样更新数据透视表 public function updatePermission id permissionId permissionValue Input get value user User find id perms
  • Laravel 集成测试:如何断言一个 URL 已被调用但另一个 URL 没有

    我想测试一个向某个 URL 发出请求的控制器 例如 http example com api say hello 但它不会向另一个 URL 发出请求 例如 http example com api say bye bye 我想测试的控制器功
  • 如何在 Laravel 查询中使用多个 OR,AND 条件

    我需要 Laravel 查询帮助 我的自定义查询 返回正确结果 Select FROM events WHERE status 0 AND type public or type private 如何写这个查询Laravel Event w
  • 限制自己超载外部 API 的速率

    我发现了很多信息和脚本示例 展示了如何对 API 用户进行速率限制 但我无法找到任何示例来说明在施加这些限制时如何对您自己的 API 请求进行速率限制 我总是用诸如以下的代码来限制我的脚本sleep or usleep命令 但感觉这是一种低
  • 这个条带请求是什么?为什么它会多次触发?

    对于使用 stripe 的 Laravel 应用程序 此请求https r stripe com 0被解雇多次 如下所示 我刷新主页后 这些请求立即被触发 问题是我最近得到了一个429 too many requests我的实时服务器出现错
  • 保存多对多关系,同步/附加不存在?

    我有以下两个多对多关系的模型 use Illuminate Database Eloquent Model class Permission extends Model The database table used by the mode
  • Laravel $request->file() 返回 null

    尝试在后端使用 Laravel 上传文件时遇到问题 Issue Laravel request gt file 方法返回 null Setup 我使用以下方法构建了一个 AJAX 请求超级代理人 https github com visio
  • 是否可以将路由参数传递给 Laravel 中的控制器构造函数?

    是否可以将路由参数 或路由段 注入到控制器构造函数中 您找到一些代码来澄清我的问题 class TestController protected param public function construct paramFromRoute
  • 邮件::队列不工作

    我无法在 laravel 5 4 中对电子邮件进行排队 在之前的 Laravel 5 3 项目中 一切都运行良好 发送仍然有效 Mail send email blank title gt nice content gt message f
  • 命令“tinker”未定义

    从 5 3 升级到 5 4 后 请按照说明操作 为了继续使用 Tinker Artisan 命令 您还应该安装 laravel tinker 软件包 composer require laravel tinker 安装软件包后 您应该添加
  • 如何在自定义组件中使用 Vue.js 插件?

    我需要输出一个表格及其内容 可以通过 Ajax 进行更新 所以我打算使用vue tables 2 https github com matfish2 vue tables 2 https github com matfish2 vue ta
  • Laravel 验证规则仅针对字母

    我正在尝试添加验证规则以仅接受信件 我正在使用regex规则 但它仍然不起作用 下面是我的代码 Validate request input this gt validate request name gt required regex p
  • Laravel nova diffForHumans 日期时间

    我对用户有字段last active 我想用 diffForHumans 或显示时间time from now来自 Moment js 我怎样才能做到呢 现在我只使用 DateTime make Activiy last active gt
  • Laravel 5 命名空间

    我刚刚下载了 Laravel 5 并开始迁移到它 但是 我发现需要使用命名空间really恼人的 除了让我的代码变得混乱之外 我觉得我没有从中得到太多东西 如何禁用命名空间要求 我认为您不应该禁用或删除名称空间 命名空间的主要原因是避免与同
  • 使用 Laravel 4 验证多个文件上传

    如何在 Laravel 4 中验证上传文件的数组 我已将其设置为允许多个文件 并且已测试这些文件是否存在于 Input file files 数组中 但如何验证每个文件呢 这是我尝试过的 notesData array date gt In
  • Laravel 验证 如果勾选复选框,则需要输入文本?

    我一直在阅读 Laravel 验证文档 我不清楚如何结合两个规则 例如
  • 扩展蓝图类?

    我想覆盖timestamps 函数中发现Blueprint班级 我怎样才能做到这一点 e g public function up Schema create users function Blueprint table table gt
  • 第一个选项为空的选择框

    如何将选择框中的第一个选项设置为空值 我正在从数据库获取数据 我想将选项默认设置为 请选择一个选项 我找到 default gt Please select 不适用于 HTML5 必需属性 这确实有效 listOfValues 1 gt C
  • 通知用户消息仍在输入中

    我正在使用 Laravel 5 6 7 Socket IO 和 vue js 我没有使用 Pusher 和 redis 下面是我的代码 用于向与我一对一聊天的用户发送消息 var url http localhost 6001 apps M

随机推荐

  • django.db.backends.dummy 和 django.db.backends.mysql 有什么区别?

    django db backends dummy 和 django db backends mysql 有什么区别 我发现有人使用dummy和mysql 但我搜索后不知道他们的区别 django db backends mysql后台数据库
  • 获取类层次结构的所有字段[重复]

    这个问题在这里已经有答案了 我有课 ClassA public String filedA ClassB extends ClassA public String filedB ClassC extends ClassB public St
  • 使用spatiallite 将 GIS 缓冲值度以米为单位

    我是 Spatialite 的新手 我有以下查询 select A from linka as A pointa as B where Contains Buffer B Geometry 100 A Geometry 我实际上想创建 10
  • 强制一种方法等待另一种方法完成

    在我的原始视图控制器中 在转到目标视图控制器之前 我调用一个获取关键参数的方法 然后在以下方法中在目标视图控制器中设置关键参数 然而 关键参数是在之前设置的doSomethingToGetKey方法已完成 因此传递了一个空值 我想知道是否有
  • 如何创建自己的资源名称?

    我可以在中使用我自己的资源名称吗themes xml 例如
  • 由于未注册 Windows.Launch 合同,Windows 10 分配的访问应用程序无法启动

    我有一个 WPF 应用程序 我已使用以下命令将其转换为 UWP 应用程序DesktopAppConverter为了运行它分配的访问权限模式 转换后的应用程序在非分配访问模式下运行时可以工作 可以安装并正常运行 但是 当我将其设置为分配的访问
  • 无法使用 cURL 将 SSH 密钥发送到 Github

    我正在尝试将我的公共 ssh 密钥发送到 Github 我将密钥设置为 shell 中的变量 但它给出了key is invalid You must supply a key in OpenSSH public key format错误
  • 在堆栈弹出中反应本机路由通量重新渲染组件

    如何重新运行 React 组件生命周期方法来确定在从堆栈转换回以前的屏幕时是否需要重新渲染React Native 路由器 Flux 设想 场景 A gt B gt A 假设 A 是初始场景 我们使用 a 从 A 导航到 B推即 Actio
  • 为什么我们先复制然后移动?

    我在某处看到代码 其中有人决定复制一个对象 然后将其移动到类的数据成员 这让我感到困惑 因为我认为移动的全部目的是为了避免复制 这是示例 struct S S std string str data std move str 这是我的问题
  • 带有列表和字典的嵌套循环

    所以我有点陷入了一个问题 本质上 我想使用列表和字典运行一个嵌套循环 但我似乎不知道如何操作 我的用例是运行一个 playbook 它将通过使用主体列表签署公钥来生成 SSH 证书 我有一个充当跳转主机的主机列表 称为 bastionHos
  • 如何获取java日历中每月第一个星期三的日期

    我如何使用java日历类获取该月下一个第一个星期三的日期 例如 Today 24 03 2012 the next first Wednesday will be 04 04 2012 On 05 04 2012 the next firs
  • 这个预提交钩子如何修复尾随空格?

    发生了什么事这个预提交钩子 我认为更改文件会导致它们被重新暂存 bin sh A git hook script to find and fix trailing whitespace in your commits Bypass it w
  • x86-64 分段错误保存堆栈指针

    我目前正在关注本教程 但我不是那所学校的学生 GDB 给我一个分段错误thread start在线上 movq rsp rdi save sp in old thread s tcb 当我回溯时 这是附加信息 0 thread start
  • 如何使用 JPA 映射 Duration 类型

    我在一个类型的类中有一个属性字段javax xml datatype Duration 它基本上代表一个时间跨度 例如 4 小时 34 分钟 JPA 告诉我这是一个无效类型 这并没有让我感到震惊 这有什么好的解决办法吗 我可以实现我自己的
  • 如何将输出写入 Android 中的日志?

    我想将一些调试输出写入日志以使用 logcat 进行查看 如果我向 System out 写入一些内容 则该内容已显示在 logcat 中 写入日志并向输出添加级别和标签的干净方法是什么 调查android util Log 它允许您写入具
  • 如何捕获 Flash 影片成功加载时的事件触发?

    我目前正在使用 jQuery 以及 swfObject 将 swf 影片动态嵌入到我的网页中 我目前在将 immem 的音乐播放器嵌入我的网页时遇到问题 因为他们的嵌入代码没有任何加载屏幕 因此 当我使用 swfObject 替换元素时 该
  • 从 res/raw 文件夹设置铃声

    我正在尝试在中设置音频文件 res raw 以编程方式将文件夹作为默认铃声 我有以下文件 如下所示 myapp res raw file mp3 我有以下代码 但不幸的是它完全无法设置铃声 我不确定是什么导致了这个问题 但想知道是否有人有任
  • django-admin.py:找不到命令(bluehost 服务器)

    经过6个多小时的挣扎 我决定寻求帮助 任务 在Django的帮助下创建一个项目工具 Windows Vista Putty SSH地点 Bluehost www bluehost com 服务器 我已经阅读过有关同一问题的这些主题 bash
  • TIME_WAIT 连接过多,出现“无法分配请求的地址”

    我有一个小型 Web 应用程序 它打开 TCP 套接字连接 发出命令 读取响应 然后关闭对特定 REST 端点的每个请求的连接 我已经开始使用 Apache JMeter 对端点进行负载测试 并注意到运行一段时间后 我开始看到诸如 无法分配
  • Laravel 4 - 无法检索一对多关系中的数据

    我有一个报价模型 class Quote extends Eloquent public function quote lines return this gt hasMany QuoteLine 还有一个 QuoteLine 模型 cla