首页 文章

使用模型中定义的关系方法进行Laravel原始查询

提问于
浏览
1

我创建了一个执行原始查询的函数(用于搜索表单) . 这将返回查询结果,如 return \DB::Select(\DB::Raw("SELECT ...")) . 保存此方法的模型也包含关系函数 . 假设此模型具有关系函数 products ,并且原始查询的结果存储在$ items中 .

当我尝试类似的东西

@foreach($items as $item)
  @foreach($item->products as $product)
    {{ $product->someVar }}
  @endforeach
@endforeach

我得到一个未定义的属性“Undefined property:stdClass :: products”错误 . 我认为这是因为Laravel还不知道$ items实际上是与“产品”有关系的Model-class的集合 .

有没有办法将这些关系函数“绑定”到原始查询?

1 回答

  • 4

    我发现解决方案有点不知不觉在de Model-class中查看 . 有一个方法 hydrate (和 hydrateRaw ) . 文档告诉我们以下内容:

    “从普通数组创建模型集合 . ”

    如果有人想知道,这是如何解决上面的问题:

    return self::hydrate(
      \DB::Select(
        \DB::Raw("SELECT * FROM `table`")
      )
    );
    

相关问题