php – MYSQL – 从不同的行中获取值并将它们返回到同一行

weixin_38093910 2019-09-12 10:44:33
我正在使用Laravel 4开发一个多语言网站,我正在使用一个名为waavi翻译的翻译包,简而言之就是将laravel的语言文本文件保存到数据库中. 我有一个问题是以连贯的方式检索数据以使用数据表显示它们以创建语言翻译界面. 表结构如下: 语言表: id | locale | name --------------------- 1 | en | english 2 | fr | french 等等… Language_entries表: id | language_id | namespace | group | item | text -------------------------------------------------------------------- ..... 9 | 1 | * | permissions | save.success | :name has successfully been saved. .... 102 | 2 | * | permissions | save.success | :name a bien été sauvegardé. ..... 我正在寻找的查询结果是: group | item | en | fr ---------------------------------------------------------------------------------------------- permissions | save.success | :name has successfully been saved. | :name a bien été sauvegardé. 任何帮助,将不胜感激!
...全文
38 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38095546 2019-09-12
  • 打赏
  • 举报
回复
以用户的@Notulysses回答.您可以在Laravel中使用SQL查询(在4.0上测试),如下所示: DB::table(DB::raw('language_entries t2')) ->select( 't2.group', 't2.item', DB::raw('GROUP_CONCAT(IF(t1.locale = "en", t2.`text`, NULL)) AS en'), DB::raw('GROUP_CONCAT(IF(t1.locale = "fr", t2.`text`, NULL)) AS fr') ) ->leftJoin(DB::raw('languages t1'), function($join) { $join->on('t1.id', '=', 't2.language_id'); }) ->groupBy('t2.group', 't2.item') ->get(); 我在DB :: table()中使用DB :: raw(”)的原因是因为Laravel会将language_entries t2变为’language_entries t2′,这将破坏查询.选择和左连接的原因相同. 如果您想使用变量而不是手动添加区域设置,请确保使用 DB::connection()->getPdo()->quote("Safe") 保持查询安全.

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧