php - 当左连接字段为空时后端返回错误

标签 php mysql doctrine-orm query-builder api-platform.com

我有一个返回公司详细信息的查询,但是如果用于左连接的字段为空,查询返回错误。如何解决这个问题?

我试过了,

->leftJoin('company.field1', 'field1')
->leftJoin('company.field2', 'field2')
->andWhere('company.field1!= :empty')->setParameter('empty', serialize([]))
        ->andWhere('company.field2!= :empty')->setParameter('empty', 
serialize([]));

这将返回所有具有非空字段 1 和字段 2 的公司。但我希望所有具有空/非空字段 1 和字段 2 的公司。字段 field1 和 field2 不是从前端添加的必填字段。

最佳答案

LeftJoin 接受空值。

$queryBuilder
  ->leftJoin('company.field1', 'field1')
  ->leftJoin('company.field2', 'field2')
  ->where('company.field1 is null')
  ->andWhere('company.field2 is null');

这将返回 field1 和 field2 仅为空的所有公司。 (这两个字段必须为空才能返回)。 (也许您应该尝试使用 = 而不是关键字 is)

关于php - 当左连接字段为空时后端返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56033928/

相关文章:

php - 试图通过 PHP 搜索数据库

php - MYSQL 跨表更新不工作

mysql:从一列创建多列

php - 显示所有周/月包括空计数

php - Doctrine 2.1 - 日期时间列默认值

php - 交响乐框架;存储用户角色的惯用方式

php - 有 26 个外键的 MySQL 表的替代方案吗

PHP 文本编码/解码 (TinyMCE)

mysql - 如何构建一个查询来获取所有不同的对(column1、column2)和每对的 count() ?

php - Symfony 中的多重过滤