Laravel:在没有 Eloquent 的情况下在视图中显示数据

Posted

技术标签:

【中文标题】Laravel:在没有 Eloquent 的情况下在视图中显示数据【英文标题】:Laravel: display data in view without 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 中做的事情吗?

【问题讨论】:

【参考方案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

【讨论】:

以上是关于Laravel:在没有 Eloquent 的情况下在视图中显示数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有 Laravel 尝试将其保存到数据库的情况下在 Eloquent 模型中使用受保护的属性

Laravel Eloquent - 更新()函数

laravel eloquent - 在嵌套急切加载的关系上不使用

Laravel/Eloquent 建议覆盖 trait 属性?

Laravel 4 Eloquent 返回错误的 ID

在 Laravel 中使用 Eloquent 进行更高级的数据库查询