首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >拉勒维尔-联合+帕格茨在同一时间?

拉勒维尔-联合+帕格茨在同一时间?
EN

Stack Overflow用户
提问于 2014-08-16 00:45:42
回答 12查看 22.5K关注 0票数 23

简介:

我试图合并两个表recipesposts,然后将->paginate(5)添加到查询中。

但出于某种原因,我得到了这个错误:

基数冲突: 1222使用的SELECT语句有不同数量的列(SQL:(从posts选择计数(*)作为聚合

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$recipes = DB::table("recipes")->select("id", "title", "user_id", "description", "created_at")
                    ->where("user_id", "=", $id);

$items = DB::table("posts")->select("id", "title", "user_id", "content", "created_at")
                ->where("user_id", "=", $id)
                ->union($recipes)
                ->paginate(5)->get();

我做错什么了吗?

没有->paginate(5),查询就能正常工作。

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2014-08-16 09:26:19

你说得对,分页会引起问题。现在,您可以创建一个视图并查询视图,而不是实际的表,手动创建Paginator

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$page = Input::get('page', 1);
$paginate = 5;

$recipes = DB::table("recipes")->select("id", "title", "user_id", "description", "created_at")
            ->where("user_id", "=", $id);
$items = DB::table("posts")->select("id", "title", "user_id", "content", "created_at")
            ->where("user_id", "=", $id)
            ->union($recipes)
            ->get();

$slice = array_slice($items->toArray(), $paginate * ($page - 1), $paginate);
$result = Paginator::make($slice, count($items), $paginate);

return View::make('yourView',compact('result'));
票数 10
EN

Stack Overflow用户

发布于 2016-10-26 01:42:48

我已经面临这样的问题了。我发现了一个帖子,它不是关于pagination的,而是关于unions的。

请参阅以下链接:用Laravel 4.1对UNION查询进行排序

@Mohamed分享了一个很好的技巧,它在我的问题上奏效了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$query = $query1->union($query2);
$querySql = $query->toSql();
$query = DB::table(DB::raw("($querySql order by foo desc) as a"))->mergeBindings($query);

这将创建如下所示的sql:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select * from (
  (select a as foo from foo)
  union
  (select b as foo from bar)
) as a order by foo desc;

您可以像往常一样使用Laravel的paginate,就像$query->paginate(5)一样。(但为了适应你的问题,你得把它分给它一点)

票数 8
EN

Stack Overflow用户

发布于 2018-06-10 00:22:27

用来自jdme的一种更优雅的方法来重复Illuminate\Database\Query\Builder回答

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$recipes = DB::table("recipes") ..
$items = DB::table("posts")->union($recipes) ..

$query = DB::query()
    ->fromSub($items, "some_query_name");

// Let's paginate!
$query->paginate(5);

我希望这能帮到你!

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25338456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文