对于 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
我有一个 "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