首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Laravel Eloquent中使用联合查询?

如何在Laravel Eloquent中使用联合查询?
EN

Stack Overflow用户
提问于 2019-02-12 22:30:36
回答 2查看 142关注 0票数 1

这个MySQL查询有联合和规范化,我不知道如何写最小的查询。

代码语言:javascript
复制
SELECT DISTINCT val
FROM
(
    SELECT 'date' date_type, date val FROM user_presentation
    UNION
    SELECT 'accept_date', accept_date FROM user_presentation
    UNION
    SELECT 'question_date', question_date FROM user_presentation
    UNION
    SELECT 'success_date', success_date FROM user_presentation
) normalized;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-12 22:36:00

你可以在你的Laravel代码中链接一系列的联合:

代码语言:javascript
复制
$first = DB::table('user_presentation')
    ->select('date');

$second = DB::table('user_presentation')
    ->select('accept_date');

$third = DB::table('user_presentation')
    ->select('question_date');

$fourth = DB::table('user_presentation')
    ->select('success_date AS val')
    ->union($first)
    ->union($second)
    ->union($third)
    ->get();

注意,上面的代码实际上对应于这个查询:

代码语言:javascript
复制
SELECT date AS val FROM user_presentation UNION
SELECT accept_date FROM user_presentation UNION
SELECT question_date FROM user_presentation UNION
SELECT success_date FROM user_presentation;

此外,您拥有的DISTINCT子查询不应该是必需的,因为联合查询本身应该删除所有重复的日期值。

票数 2
EN

Stack Overflow用户

发布于 2019-02-13 01:02:19

代码语言:javascript
复制
$userP = UserPresentation::get()
->only('date', 'accept_date', 'question_date', 'success_date')
->unique();

100% Laravel方式,使用Collection,这将一起选择所有四个日期,Laravel Collection将从这些选择中找到唯一的行。

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

https://stackoverflow.com/questions/54652357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档