对于 API 平台和 graphql 上的不可空字段,不能 return null

Cannot return null for non-nullable field on API platform and graphql

我有一个 "user" 实体,其中有一个未映射的 属性,如下所示:

namespace App\Entity\User;

// ...

/**
 * @var string
 * @Groups({"readAnnounce", "readUser"})
 */
private $lastUrlImageProfilValid;


/**
 * @return string
 */
public function getLastUrlImageProfilValid()
{
    foreach ($this->imageProfil as $image){
        if ($image->getIsValid()){
            return $image->getUrl();
        }
    }

    return null;
}

当我用 REST 调用这个实体时,它可以工作但不能用 graphql,它 return 这个错误:

Cannot return null for non-nullable field User.lastUrlImageProfilValid

Graphql 代码:

{
  users(
    first: 30,
  ) {
    edges {
      node {
        lastUrlImageProfilValid
      }
    }
  }
}

如何设置未映射的 属性 可为空?

您需要在 PHPDoc:

中使 属性 可为空
/**
 * @var null|string
 * @Groups({"readAnnounce", "readUser"})
 */
private $lastUrlImageProfilValid;

/**
 * @return null|string
 */
public function getLastUrlImageProfilValid()

或者,在 PHP 7.4 中:

/**
 * @Groups({"readAnnounce", "readUser"})
 */
private ?string $lastUrlImageProfilValid;

public function getLastUrlImageProfilValid(): ?string