通过特殊关系和分页命令查询

时间:2016-06-06 12:41:29

标签: php mysql laravel eloquent laravel-5.2

我有一个网站,使用Laravel分页在页面上列出不同的产品。此页面上的产品应按名称排序,但问题在于此。

我的数据库结构如下所示:

+----------+    +--------------+
| Products |    | Translations |
+----------+    +--------------+
| Id       |    | product_id   |
| ...      |    | slug         |
+----------+    | locale       |
                | value        |
                +--------------+

每个产品的名称都在translationsslug='name'中提供。但是,并非每个产品都在每个可用的locale中都有翻译 产品的名称应该是给定语言环境中的翻译。如果不可用,则使用英文名称。如果这也不可用,则使用第一个可用的翻译。

在eloquent或MySQL中以某种方式可以做到这一点吗?我一直在寻找解决方案,但找不到一个能做到这一点。

1 个答案:

答案 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;