2015-04-03 25 views
1

我創建了一個執行原始查詢(對於搜索表單)的函數。這將返回查詢結果,如return \DB::Select(\DB::Raw("SELECT ..."))保存此方法的模型也包含關係函數。假設這個模型有一個關係函數products並且原始查詢的結果存儲在$ items中。使用模型中定義的關係方法的Laravel原始查詢

當我嘗試像

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

我得到一個未定義的屬性 「未定義的屬性:stdClass的::產品」 的錯誤。我認爲這是因爲Laravel還不知道$ items實際上是與「products」有關係的Model-class的集合。

有沒有辦法將這些關係函數「綁定」爲原始查詢?

+0

向我們展示一些代碼,您如何填充''$ items''陣列 – 2015-04-03 12:17:03

回答

4

我發現該解決方案有點不知不覺地在de模型類中看。有一種方法hydrate(和hydrateRaw)。該文檔告訴我們關於它的以下內容:

「從普通數組創建模型的集合。」

如果你想知道,這是如何解決上述問題:

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