我有一个网站,使用Laravel分页在页面上列出不同的产品。此页面上的产品应按名称排序,但问题在于此。
我的数据库结构如下所示:
+----------+ +--------------+
| Products | | Translations |
+----------+ +--------------+
| Id | | product_id |
| ... | | slug |
+----------+ | locale |
| value |
+--------------+
每个产品的名称都在translations
表slug='name'
中提供。但是,并非每个产品都在每个可用的locale
中都有翻译
产品的名称应该是给定语言环境中的翻译。如果不可用,则使用英文名称。如果这也不可用,则使用第一个可用的翻译。
在eloquent或MySQL中以某种方式可以做到这一点吗?我一直在寻找解决方案,但找不到一个能做到这一点。
答案 0 :(得分:1)
您应该尝试使用COALESCE函数,该函数返回第一个非空值,例如:
SELECT COALESCE(<sub-query by locale>,
<sub-query to bring english name>,
<sub-query to bring any other value you want>) FROM product;