php - 按特殊关系排序查询并分页

标签 php mysql laravel eloquent laravel-5

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

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

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

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

是否有可能在 Eloquent 或 MySQL 中执行此操作?我一直在寻找解决方案,但找不到能做到这一点的解决方案。

最佳答案

您应该尝试使用 COALESCE函数,它返回第一个非空值,例如:

SELECT COALESCE(<sub-query by locale>, 
    <sub-query to bring english name>, 
    <sub-query to bring any other value you want>) FROM product;

关于php - 按特殊关系排序查询并分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37657762/

相关文章:

php - PHP 中的嵌套 MySQL 查询

php - 使用 PDO 的准备语句获取数据库记录

php - 识别我网站的访问者所在的国家/地区

php - Zend 查询更新

php - 通过多态使用 Laravel Eloquents HasManyThrough 关系与多个关系

php - 如何为自定义字段中继器添加复选框?

未找到 MySQL keyring_file(错误代码 : 13 - Permission denied) on WAMP64 MySQL 5. 7.19

php - Laravel CSS 文件链接修正

php - 警告 : require(. ..):无法打开流:没有这样的文件或目录

mysql - 在 MySQL 中递归地获取经理下的员工数