当前位置: 首页 > 知识库问答 >
问题:

Laravel雄辩的查询php版本问题(5.6与7.0)

张丁雷
2023-03-14

关于这个话题,我提到了一个奇怪的问题。。我自己“解决”了这个问题,但想讨论一下是否有人理解这背后的问题。

此查询适用于php 7.0:

$image = (ProductImage::all()->where('productHistory_id', $product->history_id))->first();

并导致语法错误,意外'-

此查询(不带括号)适用于php 7.0和5.6:

$image = ProductImage::all()->where('productHistory_id', $product->history_id)->first();

什么?!

亲切的问候,尼科


共有1个答案

艾正浩
2023-03-14

PHP类型检查在5. x和7. x之间被频繁修改

在这两个版本中,表达式:

ProductImage::all()->where('productHistory_id', $product->history_id)

返回QueryBuilder的实例。

我怀疑括号的存在会导致早期版本的PHP解释器将其理解为标量值(如(1)1所示),而不是对象值。

这解释了为什么您会因为PHP5而得到一个意外的对象操作符。X不理解(…)的返回将表达式正确地表示为对象。

此错误是由与此有关数组解引用的错误完全相同的解析错误引起的。它出现在PHP5.4之前的版本中,是由于intereter没有检测到函数作为数组返回,而事先没有使用变量来存储它。

另外,括号不会改变任何东西,因为对象上的操作总是在语句中从左到右执行。我可以建议您避免在代码库中添加无用的噪声吗?

 类似资料:
  • 我有以下三种型号: 类别字段: 分类选项: 当我运行这个查询时,我得到了这个错误: SQLSTATE[42S22]:列未找到: 1054未知列'field ID'在'where子句'(SQL:选择*从其中=3)任何帮助请知道是什么问题!!?

  • 我有三种模式——博客、帖子、评论。博客有很多帖子,帖子有很多评论 当我写作时 它会给所有的博客发帖子和评论。但我将如何获得那些由管理员用户创建的博客,即评论表中的用户id。在哪里写入

  • 在我的应用程序中,我更新了从一对多到多对多的关系,我试图找出一种持久化关联功能的方法。 假设我有两个相关的表,例如狗和主人。如果我有一系列的主人,并且我正试图为这些主人获取一份狗的id列表,我应该如何雄辩地做到这一点? 这里也提出了类似的问题:https://laracasts.com/discuss/channels/laravel/getting-many-to-many-related-da

  • 我正在使用Laravel和它提供的雄辩的ORM,但我正在努力选择我需要的数据。我有两种型号 我该怎么做?

  • 我有一个问题,我很难用laravel雄辩的ORM编写这个问题。 如果有人能帮忙,我将不胜感激。 下面是SQL表达式:

  • 我正在编写php代码,对于当前的项目,我正在使用laravel框架(带有雄辩的ORM)。在这个项目中,我创建了两个表:用户和任务。我想在这些表之间创建一个“一对多”的关系。因此,一个用户可以有许多任务。在Tasks类中,我创建了方法所有者(): 但是当我以前得到用户名的时候 我得到这个异常:未定义的属性:illumb\Database\Eloquent\Relations\BelongsTo::$