2015-11-21 76 views
0

假設我需要在視圖中顯示文章列表。所以我運行一個複雜的查詢來獲取所有需要的數據,並得到一個結果表,例如,像這樣:Laravel:在沒有雄辯的情況下顯示數據

| id | article_name | article_body | article_tag_id | ...(更多專欄)

還有一個模型定義:Article.php。

問題:在Laravel中準備查看數據的正確方法是什麼?我還想補充一點,我正在尋找一種不使用Eloquent的方法。當然,我可以做$ articles = Article::all();但如果我處理非常複雜的查詢,我需要通過控制加載邏輯手動加載對象。

在上面的情況下,我想這樣做是創建一個模型,並且每個行傳遞給方法負載()是這樣的:

$model = new Article(); 
$model.load(row); 
array_push($dataForView, $model); 

最後發送數據,以查看

return view('articles')->with('articles', $dataForView); 

這是我應該在Laravel做什麼?

回答

0

我不確定你想避免所有在一起的雄辯。但你可以抽象的複雜查詢到你的模型的方法:

// article.php 

public function my_complex_query() 
{ 

    // code here. Eloquent, or Query Builder or 
    // Raw SQL 

    return $result; 

} 

然後調用,從你的控制器:

return view('the-view') 
    ->withArticles(Article::my_complex_query()); 

// or you can inject your model into your controller and call $this->article->my_complex_query() 

然後遍歷視圖中的數據。這是雄辯的美,因爲它將你的數據庫結果映射到一個對象。

@foreach ($articles as $article) 
{{ $article->name }} 
// ... 
@endforeach