【问题标题】:Laravel: display data in view without EloquentLaravel:在没有 Eloquent 的情况下在视图中显示数据
【发布时间】:2015-11-21 13:45:10
【问题描述】:

假设我需要在视图中显示文章列表。因此,我运行了一个复杂的查询来获取所有需要的数据,并得到一个结果表,例如,如下所示:

|编号 |文章名称 |文章正文 | article_tag_id | ...(更多列)

还定义了一个模型:Article.php。

问题:在 Laravel 中准备数据以供查看的正确方法是什么?我还想补充一点,我正在寻找一种不使用 Eloquent 的方法。当然我可以这样做 $articles = Article::all(); 但是如果我正在处理非常复杂的查询并且我需要通过控制加载逻辑来手动加载对象。

在上述情况下,我想做的是创建一个模型并将每一行传递给方法 load(),如下所示:

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

最后将数据发送到视图

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

这是我应该在 Laravel 中做的事情吗?

【问题讨论】:

    标签: laravel view model load eloquent


    【解决方案1】:

    我不确定您是否要一起避免 Eloquent。但是您可以将复杂的查询抽象为模型上的方法:

    // 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()
    

    然后循环浏览视图中的数据。这就是 eloquent 的美妙之处,因为它将您的数据库结果映射到一个对象。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-22
      • 2014-02-02
      • 1970-01-01
      • 2021-06-04
      • 2016-04-24
      • 1970-01-01
      • 1970-01-01
      • 2021-07-11
      相关资源
      最近更新 更多