2015-11-21 77 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