【问题标题】:Backend returns error when left join fields are empty左连接字段为空时后端返回错误
【发布时间】:2019-05-08 05:12:48
【问题描述】:

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

我试过了,

->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 的公司。此字段字段 1 和字段 2 不是从前端添加的必填字段。

【问题讨论】:

  • 您的问题不清楚。你能提供一个你的实体的例子吗?
  • 看看如何处理空值并尝试适应你的情况:stackoverflow.com/a/11566476/4716084
  • But i want all companies with empty/non-empty field1&field2 - 所以,值无关紧要。为什么将它包含在 where 语句中?并且可能改用orWhere

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


【解决方案1】:

LeftJoin 接受空值。

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

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

【讨论】:

    猜你喜欢
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多