我创建了一个执行原始查询的功能(用于搜索表单)。这将返回查询结果,如return \DB::Select(\DB::Raw("SELECT ..."))
。保存此方法的模型也包含关系函数。我们假设此模型具有关系函数products
,原始查询的结果存储在$ items中。
当我尝试类似
时@foreach($items as $item)
@foreach($item->products as $product)
{{ $product->someVar }}
@endforeach
@endforeach
我得到一个未定义的属性"未定义的属性:stdClass :: products"错误。我认为这是因为Laravel还不知道$ items实际上是Model-class的集合,它与" products"。
有关系。有没有办法去"绑定"那些关系函数与原始查询?
答案 0 :(得分:4)
我发现解决方案有点不知不觉在de Model-class中查看。有方法hydrate
(和hydrateRaw
)。文档告诉我们以下内容:
"从普通数组创建模型集合。"
如果有人想知道,这就是解决上述问题的方法:
return self::hydrate(
\DB::Select(
\DB::Raw("SELECT * FROM `table`")
)
);