Laravel:带有 GROUP_CONCAT 和 DISTINCT ON 的 selectRaw

Posted

技术标签:

【中文标题】Laravel:带有 GROUP_CONCAT 和 DISTINCT ON 的 selectRaw【英文标题】:Laravel: selectRaw with GROUP_CONCAT and DISTINCT ON 【发布时间】:2021-10-24 07:13:50 【问题描述】:

我正在尝试使用DISTINCT ON 仅显示一个drug_code 并使用CONCATdrug_dosage 显示在另一个不同的drug_code 上。

这是没有 CONCAT 的输出:

$all_drugs = HmsBbrKnowledgebaseDrug::selectRaw('DISTINCT ON (drug_code)
    bbr_drug_id,
    hospital_id,
    drug_code,
    drug_name,
    drug_dosage,
    display_flag'
)
->orderBy('drug_code', 'ASC')
->get();

如您所见,它可以正常工作,但是在添加带有分隔符的 GROUP_CONCAT 时出现错误:

$all_drugs = HmsBbrKnowledgebaseDrug::selectRaw('DISTINCT ON (drug_code)
    bbr_drug_id,
    hospital_id,
    drug_code,
    drug_name,
    GROUP_CONCAT(drug_dosage SEPARATOR ",") as dosage
    display_flag'
)
->orderBy('drug_code', 'ASC')
->get();

我不知道为什么GROUP_CONCAT 给出了一个方法不支持的错误:

【问题讨论】:

【参考方案1】:

最后的错误

get 方法不支持 ....

这意味着您正在尝试 get 请求路由,但在 routes/web.php 中,有 post 请求该路由 所以问题可能是这样的。

我想尝试发送一个帖子请求,但您可能已经刷新了选项卡或其他内容,这会触发get 请求而不是post。所以再次尝试发布请求并确定错误是否仍然存在?

【讨论】:

以上是关于Laravel:带有 GROUP_CONCAT 和 DISTINCT ON 的 selectRaw的主要内容,如果未能解决你的问题,请参考以下文章

Group_concat - laravel 雄辩

带有 LEFT JOIN 和 IF 语句的有限 GROUP_CONCAT

带有 GROUP_CONCAT 和 CONCAT 的子查询返回 STILL 多于 1 行,错误 1242

MariaDB:带有子查询的 group_concat 失败

MySQL:带有 ORDER BY COUNT 的 GROUP_CONCAT?

在带有 LIKE 的 CASE 语句中使用 GROUP_CONCAT 列别名