【问题标题】:Accessing relation after query not returning correct values查询后访问关系未返回正确值
【发布时间】:2022-01-09 16:48:59
【问题描述】:

我有一个愚蠢的问题(在我看来,因为我确信这已经结束了,我只是忽略了……)。

我查询一个与之相关的模型。当我简单地返回整个结果时,一切正常。

$myModel = SampleModel::where('id', '>=', 0)->with('relationToAnother')->get();

返回它按预期工作。 但是,当我尝试访问该关系时,在我找回它之后循环访问它,就像

    foreach($myModel as $m) {
      echo $m->relationToAnother;
    }

我只是取回负责连接的原始模式的值(例如,来自 SampleModel 的列而不是关系)。

我在这里错过了什么,我不知道是什么。

这是我找回 $myModel 后正在做的事情。

$returnValue = array();
  foreach ($myModel as $v) {
   $returnValue[] = $v->relationToAnother->subProperty;
  }
}

这会引发错误 Trying to get property 'subProperty' of non-object。这只是逻辑,因为 $v->relationToAnother 仍然只是我的模型中没有关系而不是关系本身的列的值。 我没有包括检查该属性是否故意为空,因为这不是这里的问题。

【问题讨论】:

  • 使用dump($m->relationToAnother);dd($m->relationToAnother); 代替echo。您能否显示您的relationToAnother 关系的代码。
  • 回声只是一个例子。我尝试迭代我的模型并将某些值更改为另一个数组,因此我需要访问那里的值。代码很简单 public function relationshipToAnother() { return $this->belongsTo(Another::class);} 就像我说的:返回原始结果没有问题。我需要在返回之前对其进行更改
  • 好的,很酷。请不要为了问题而简化您的代码,因为这通常会导致实际问题被掩盖。请您在尝试更改值的位置添加代码。
  • @Rwd 相应编辑
  • relationToAnother是列名和关系吗?

标签: laravel eloquent


【解决方案1】:

我认为这会奏效

$myModel = SampleModel::with('relationToAnother')->where('id', '>=', 0)->get();

【讨论】:

    猜你喜欢
    • 2021-02-15
    • 1970-01-01
    • 2012-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-28
    • 2011-08-27
    相关资源
    最近更新 更多