php - 从查询生成器 Laravel 中排除记录

标签 php mysql sql laravel laravel-query-builder

我的表有这些数据:

ID  | company_id   | code   | description
01  |  NULL        | CD01   | Standard description CD01
02  |  NULL        | XYZU   | Standard description XYZU
03  |  1           | CD01   | Custom description CD01 for company 1
04  |  2           | CD01   | Custom description CD01 for company 2

我需要从此表中提取所有“代码”,但仅显示单个产品代码一次。

如果存在带有 company_id <> '' 的记录,我会显示该记录,如果不存在,我会显示带有标准描述的记录。

从示例数据开始,如果我想显示 company_id = 1 的文章,我希望得到以下输出:

ID   | company_id   | code   | description   
02   |  NULL        | XYZU   | Standard description XYZU
03   |  1           | CD01   | Custom description CD01 for company 1

你有什么建议吗?

谢谢

最佳答案

要按组从数据库结果中删除重复条目,您应该禁用 mysql 的 ONLY_FULL_GROUP_BY 。不要在 mysql 中这样做,也不要禁用严格模式! laravel 本身设置了一些模式。

this是禁用此模式的整体解决方案。

但是在 Laravel 中你还应该尝试另一件事:

转到YouProjectFolder/vendor/laravel/framework/src/Illuminate/Database/Connectors/MySqlConnector.php

在文件末尾找到 strict_mode() 函数,然后从函数内的字符串中删除 ONLY_FULL_GROUP_BY 。 (我刚刚在 stackoverflow 帖子中看到了这个解决方案。不幸的是我没有找到那个帖子)

关于php - 从查询生成器 Laravel 中排除记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48267076/

相关文章:

sql - Postgres - 将两列聚合成一个项目

PHP 程序因大量数据而失败

php - 将 IPv6 存储在数据库中

sql - 行设计如何影响 MySQL 性能?

java - MySQL查询抛出异常,而不是一个空的ResultSet

sql - 没有主键的多对多

PHP - 通过变量获取对象属性

php - 替换引号后转义字符串的正确方法?

mysql - 什么时候在mysql中使用外键

mysql - 没有多行的 SQL 连接