【问题标题】:Laravel eloquent split query in multiple stepsLaravel 雄辩的拆分查询分多个步骤
【发布时间】:2014-12-20 14:16:03
【问题描述】:

我认为标题很混乱,我会尽量解释清楚。假设我有一个相当大的搜索帖子的查询,如下所示:

$posts = Post::select('...')
           ->leftJoin('...')
           ->leftJoin('...')
           ->where('...')
           ->orWhere('...')
           ->orderBy('...')
           ->orderBy('...')
           ->groupBy('...')
           ->with('...')
           ->paginate(8);

如何拆分此查询?例如:

$posts = Post::select('...')
           ->leftJoin('...')
           ->leftJoin('...')

$posts->where('...')
      ->orWhere('...');

$posts->orderBy('...')
      ->orderBy('...')
      ->groupBy('...');

$posts->with('...')
      ->paginate(8);

我正在使用 Laravel 4.2,我尝试了几件事(包括 this post),但我无法让它工作。我需要这个来搜索和过滤帖子。

【问题讨论】:

  • 你能发布你正在使用的实际代码吗?你遇到了什么错误?

标签: php mysql laravel split eloquent


【解决方案1】:

首先创建模型的新实例并将其设置为变量,使用该变量构建查询,然后以 get() 结束:

$posts = new Post;
$posts = $posts->where('...');
$posts = $posts->orWhere('...');
$posts = $posts->orderBy('...');
...
$posts = $posts->get();

不过,您可以通过使用查询范围和一些结构良好的关系方法来大大简化事情,而不是进行所有这些链接。

【讨论】:

  • 效果很好,之后我尝试了$posts->where('...'),诀窍是使用`$posts = $posts->where('...')'。谢谢。
  • 当我们需要一个变量中的有序结果 $postsOrdered & unordered 结果在 $posts posts = new Post; 时有什么问题吗? $posts = $posts->where('...'); $posts = $posts->orWhere('...'); $postsOrdered = $posts->orderBy('...'); ... $posts = $posts->get(); $posts 结果受上一个影响,即 $posts 被排序。我该如何克服这个。
猜你喜欢
  • 2019-06-22
  • 1970-01-01
  • 2015-01-02
  • 2020-03-11
  • 2018-01-26
  • 2021-07-23
  • 2020-01-14
  • 1970-01-01
相关资源
最近更新 更多