【发布时间】: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是列名和关系吗?