使用具有belongsTo关系的访问器变元

2024-03-23

使用 Laravel 4,我在我的 User 模型中设置了一个 mutator:

public function getFullnameAttribute($value)
{
    return $this->first_name. ' ' .$this->last_name;
}

但我在我的汽车模型中为链接到该汽车的用户 ID 设置了关系:

public function salesManager()
{
    return $this->belongsTo('User', 'sales_manager')->select('first_name', 'last_name');
}

我在 Car 表上调用该关系:

$cars = Car::with('marqueBasic', 'modelBasic', 'salesManager')
    ->get();

现在,我该怎么办,例如

$car->salesManager->fullname

目前不起作用,我假设这是因为它与被调用的模型处于另一种模型中?

错误是:“尝试获取非对象的属性”

我是否在错误的地方调用了变异器?我尝试将其放入关系选择字段中,但也搜索了全名字段名称并出现错误。


可能的原因是您正在定义要为关系获取的字段列表。

为了理解为什么,你需要首先了解 Eloquent 是如何急切加载的销售经理当你要求它获取时的关系所有汽车及其销售经理。在这种情况下,Eloquent 会执行以下操作:

  1. 装载所有汽车
  2. 获取值销售经理所有装载车辆的列
  3. 加载 id 在第 2 点的值范围内的所有用户。
  4. 通过匹配获取的用户模型的 ID 和汽车销售经理列,将加载的用户模型映射到汽车。

如您所见,第 4 步是不可能完成的。用户的id字段未在要获取的字段列表中列出销售经理急切加载时关系如此雄辩销售经理,无法将获取的用户与汽车进行匹配。您需要添加您在中引用的字段销售经理与列表的关系:

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

使用具有belongsTo关系的访问器变元 的相关文章

  • 如何使用类中的常量作为 php 函数中的参数定义?

    我有一堂课 class FetchMode const FetchAll 0 const FetchOne 1 const FetchRow 2 和一个函数 function getRecordSet FetchMode FetchMode
  • 读取用 php 分块的范围块

    我有一个输入字段 可以在其中粘贴下载网址 之后 我使用 AJAX 请求来获取文件信息 例如 headerinfo 内容长度 mime 类型 如果我使用curl 接受范围 然后 我开始连续循环 xhr2 请求 其中包含我的 php 文件的范围
  • Laravel 如何使用查询生成器返回单列值

    我想使用 SQL 查询中的数据 为了进一步解释它 这里是我的代码 myquery DB table attendances gt select user id gt where date only newdate gt orderBy lo
  • INET6_ATON 的替代 MySQL 代码

    将旧的 INET ATON 值转换为新的二进制 INET6 ATON 值 无需 INET6 ATON INET6 NTOA 我们在表中已有数据 字段类型为UNSIGNED INT其中保存了使用以下命令创建的 IPv4 数据INET ATON
  • openssl_pkey_get_public 未打开公钥,“无起始行”错误

    当生成公钥然后用函数读取它时openssl pkey get public publicKeyResource bool false 和消息 错误 0906D06C PEM 例程 PEM read bio 无起始行 privateKey o
  • 防止刷新时提交双重表单

    我有一个简单的问题 我知道当用户使用 Post Redirect Get 模式重新加载页面时 我可以防止表单重新提交自身 但我的问题是 如果我将用户重定向回提交表单的同一页面 这种模式是否有效 我的意思是 我不想将用户重定向到另一个页面 请
  • PHP ajax使用新数组上传多个文件

    它是我的上传 html 代码 div class col xs 12 div
  • 内存泄漏?!在“array_map”中使用“create_function”时,垃圾收集器是否正确?

    我在 StackOverflow 上找到了以下解决方案 从对象数组中获取特定对象属性的数组 PHP 从对象数组中提取属性 https stackoverflow com questions 1118994 php extracting a
  • 如何在控制器中获取 User()->id (Laravel 8+)

    我正在尝试通过以下方式选择任务用户身份 但我无法将其放入控制器 我从中选择数据DB 我尝试过很多事情 其中 一些来自堆栈溢出 但它不起作用 I tried 1 userId Auth check Auth id true 2 Auth us
  • Codeigniter HMVC Ajax

    我的问题需要一些帮助 我有一个用户列表 我想在 CI HMVC 中使用 ajax 删除用户 onclick 删除按钮 这是我的列表视图的代码 function tip del click function var recId this da
  • zend框架中的一个模块中的多个控制器

    你好 我是 zend Framework2 2 0 的新手 我想创建一个带有多个控制器的模块我已经从 github 下载了 Album 模块并且它工作正常 现在我想在其中添加更多控制器 下面我显示了模块中文件的文件夹结构 module Al
  • 从 MySQL 列创建 PHP 数组

    mysql fetch array会给我一个获取行的数组 从一列中所有行的值生成数组的最佳方法是什么 您可以循环遍历数组并创建一个新数组 如下所示 column array while row mysql fetch array info
  • PHP 5 的 HTML 表单库 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个QuickForm替代品 QF 存在性能问题 例如组合框中的许多选项 我还想要一些更面向对象的东西 比如 Zend Form
  • PHP DOMDocument 中 XML 内 HTML 表的 Xpath 查询

    我有一个具有以下树结构的 XML 文件
  • SO 日期计算和格式化

    SO 使用什么脚本来显示日期 因为它的格式和逻辑显示似乎相当不错 我不确定 StackOverflow 使用什么 但最常见的时间戳表示之一是 twitter 所做的 它将时间戳显示为a moment ago 30 seconds ago x
  • SQLSTATE[HY000] [2002] 连接尝试失败,因为连接方在一段时间后没有正确响应,

    我尝试连接 2 个数据库Laravel 5 6项目 但我遇到这样的错误 SQLSTATE HY000 2002 连接尝试失败 因为连接方在一段时间后没有正确响应 或者由于连接的主机未能响应而建立的连接失败 SQL 从中选择 mt merch
  • WP 用户注册 - 也可以立即选择他/她的密码

    这是一个非常简短的前端注册指南 但我在密码方面遇到了一个小问题 我禁用了用户注册时发送的带有密码生成的电子邮件 Don t Send Notification Email To Registered User if function exi
  • AngularJS + Laravel 5 身份验证

    在使用 AngularJS 构建 SPA 时 我想在 AngularJS 网站中实现用户身份验证 但是 我不知道从哪里开始以及最佳实践是什么 基本上我有一个确定可以担任一个或多个角色 我寻找了一些例子 这样我就可以对如何正确处理这个问题有一
  • regex php - 查找 div 中具有特定 ID 的内容

    我确信这是一个简单的问题 尽管我在谷歌上进行了如此多的搜索和搜索 但我似乎无法弄清楚这有什么问题 我在此页面上的其他区域使用类似的表达式来准确返回我想要的内容 但是 我无法让这个特定的位返回我想要的东西 所以也许有人可以帮助我 我有一个带有
  • 如何在 vue.js 中使用 SVG.js 插件?

    我在用svg js在我的 Laravel 项目中运行vue js 这就是我使用的方式svg js Step 1 安装svg js作为我的 vue 应用程序中的插件 import svgJs from svg js dist svg expo

随机推荐