值必须是字符串类型,返回null
Value must be type of string, null returned
具有以下实体:
ID;
}
/**
* @return 字符串
*/
public 函数 getLat():字符串
{
return $this->lat;
}
/**
* @param 字符串 $lat
*/
public 函数 setLat(string $lat): void
{
$this->lat = $lat;
}
/**
* @return 字符串
*/
public 函数 getLng():字符串
{
return $this->lng;
}
/**
* @param 字符串 $lng
*/
public 函数 setLng(string $lng): void
{
$this->lng = $lng;
}
/**
* @return 字符串
*/
public 函数 getStreet():字符串
{
return $这->街道;
}
/**
* @param string $街道
*/
public 函数 setStreet(string $street): void
{
$this->street = $street;
}
/**
* @return 字符串
*/
public 函数 getZipcode():字符串
{
return $this->邮政编码;
}
/**
* @param 字符串 $邮政编码
*/
public 函数 setZipcode(string $zipcode): void
{
$this->zipcode = $zipcode;
}
/**
* @return 字符串
*/
public 函数 getCity():字符串
{
return $这个->城市;
}
/**
* @param 字符串 $城市
*/
public 函数 setCity(string $city): void
{
$this->city = $city;
}
/**
* @return 字符串
*/
public 函数 getDescription():字符串
{
return $this->描述;
}
/**
* @param 字符串 $描述
*/
public 函数 setDescription(string $description): void
{
$this->description = $description;
}
/**
* @var 字符串
*
* @ORM\Column(名称="lat",类型="decimal",精度=10,比例=8,可为空=false)
*/
私人$lat;
/**
* @var 字符串
*
* @ORM\Column(名称="lng",类型="decimal",精度=10,比例=8,可为空=false)
*/
私人$lng;
/**
* @var 字符串
*
* @ORM\Column(名称="street", 类型="string", 长度=255, 可为空=false)
*/
私人$街;
/**
* @var 字符串
*
* @ORM\Column(名称="zipcode", 类型="string", 长度=5, 可为空=false)
*/
私人$邮政编码;
/**
* @var 字符串
*
* @ORM\Column(名称="city", 类型="string", 长度=255, 可为空=false)
*/
私人$城市;
/**
* @var 字符串
*
* @ORM\Column(名称="description",类型="text",可为空=假)
*/
私人$描述;
/**
* @var 整数
*
* @ORM\Column(名称="id",类型="integer")
* @ORM\Id
* @ORM\GeneratedValue(策略="IDENTITY")
*/
私人 $id;
}
table一行数据:
[![在此处输入图片描述][1]][1]
[![在此处输入图片描述][2]][2]
我收到此错误:
>> "type": "https://www.rfc-editor.org/rfc/rfc2616#section-10",
"title": "An error occurred",
"detail": "Type error: Return value of App\Entity\Address::getLat() must be of the type string, null returned",
[![在此处输入图片描述][3]][3]
我的错在哪里?使用 Symfony 4.0。
[1]: https://i.stack.imgur.com/OQw4b.png
[2]: https://i.stack.imgur.com/HrFT3.png
[3]: https://i.stack.imgur.com/PCPww.png
getter getLat
具有 return 类型提示 string
,这意味着只有实际的字符串值(这也意味着:没有空值!)作为 return 值被接受。
你没有显示你实际使用实体的代码,但它基本上归结为对象中每个 属性 的默认值是 null
如果没有不同的定义。
看这个例子:
$address = new Address();
// the following lines will produce an error in your example
// because your return type hint doesn't allow null values
$address->getId(); // returns null
$address->getStreet(); // returns null
$address->getLat(); // returns null
$address->setLat("4.56789");
$address->getLat(); // returns "4.56789"
关于学说的注释:
如果数据库中的值设置正确,在 Doctrine 填充实体后(例如通过 $address = $addressRepo->find(123);
),你不会 运行 陷入这个问题。只有当您自己创建一个新实体然后尝试使用 getter 方法时才会发生这种情况。
可能的解决方案:
1.) 允许空值作为 return 值。在您的 return 类型提示前加上一个问号,如下所示:
/**
* @return string|null
*/
public function getLat(): ?string
{
return $this->lat;
}
但是如果您这样做,您的代码必须准备好处理来自这些方法的空值!
2.) 在对象中使用正确的数据类型定义默认值:
/**
* @var string
*
* @ORM\Column(name="lat", type="decimal", precision=10, scale=8, nullable=false)
*/
private $lat = "";
您的代码必须准备好将空字符串作为 return 值处理!或者,您也可以在构造函数方法中定义默认值。
3.) 通过将它们作为构造函数的参数来要求这些属性可用:
public function __constructor(string $lat, string $lng /*, add the other required properties */) {
$this->lat = $lat;
$this->lng = $lng;
// ... additional properties here ...
}
在这种情况下,您 必须 在使用 new Address(/* parameters go here */);
创建对象时提供值。
交响乐 5:
public function getSomething(): ?string
{
return $this->something;
}
public function setSomething(string $something): self
{
$this->something= $something;
return $this;
}
像这样从 (string $something) 中删除字符串,它应该可以工作,它对我有用
public function getSomething(): ?string
{
return $this->something;
}
public function setSomething($something): self
{
$this->something= $something;
return $this;
}
具有以下实体:
ID; } /** * @return 字符串 */ public 函数 getLat():字符串 { return $this->lat; } /** * @param 字符串 $lat */ public 函数 setLat(string $lat): void { $this->lat = $lat; } /** * @return 字符串 */ public 函数 getLng():字符串 { return $this->lng; } /** * @param 字符串 $lng */ public 函数 setLng(string $lng): void { $this->lng = $lng; } /** * @return 字符串 */ public 函数 getStreet():字符串 { return $这->街道; } /** * @param string $街道 */ public 函数 setStreet(string $street): void { $this->street = $street; } /** * @return 字符串 */ public 函数 getZipcode():字符串 { return $this->邮政编码; } /** * @param 字符串 $邮政编码 */ public 函数 setZipcode(string $zipcode): void { $this->zipcode = $zipcode; } /** * @return 字符串 */ public 函数 getCity():字符串 { return $这个->城市; } /** * @param 字符串 $城市 */ public 函数 setCity(string $city): void { $this->city = $city; } /** * @return 字符串 */ public 函数 getDescription():字符串 { return $this->描述; } /** * @param 字符串 $描述 */ public 函数 setDescription(string $description): void { $this->description = $description; } /** * @var 字符串 * * @ORM\Column(名称="lat",类型="decimal",精度=10,比例=8,可为空=false) */ 私人$lat; /** * @var 字符串 * * @ORM\Column(名称="lng",类型="decimal",精度=10,比例=8,可为空=false) */ 私人$lng; /** * @var 字符串 * * @ORM\Column(名称="street", 类型="string", 长度=255, 可为空=false) */ 私人$街; /** * @var 字符串 * * @ORM\Column(名称="zipcode", 类型="string", 长度=5, 可为空=false) */ 私人$邮政编码; /** * @var 字符串 * * @ORM\Column(名称="city", 类型="string", 长度=255, 可为空=false) */ 私人$城市; /** * @var 字符串 * * @ORM\Column(名称="description",类型="text",可为空=假) */ 私人$描述; /** * @var 整数 * * @ORM\Column(名称="id",类型="integer") * @ORM\Id * @ORM\GeneratedValue(策略="IDENTITY") */ 私人 $id; } table一行数据: [![在此处输入图片描述][1]][1] [![在此处输入图片描述][2]][2] 我收到此错误: >> "type": "https://www.rfc-editor.org/rfc/rfc2616#section-10", "title": "An error occurred", "detail": "Type error: Return value of App\Entity\Address::getLat() must be of the type string, null returned", [![在此处输入图片描述][3]][3] 我的错在哪里?使用 Symfony 4.0。 [1]: https://i.stack.imgur.com/OQw4b.png [2]: https://i.stack.imgur.com/HrFT3.png [3]: https://i.stack.imgur.com/PCPww.png getter getLat
具有 return 类型提示 string
,这意味着只有实际的字符串值(这也意味着:没有空值!)作为 return 值被接受。
你没有显示你实际使用实体的代码,但它基本上归结为对象中每个 属性 的默认值是 null
如果没有不同的定义。
看这个例子:
$address = new Address();
// the following lines will produce an error in your example
// because your return type hint doesn't allow null values
$address->getId(); // returns null
$address->getStreet(); // returns null
$address->getLat(); // returns null
$address->setLat("4.56789");
$address->getLat(); // returns "4.56789"
关于学说的注释:
如果数据库中的值设置正确,在 Doctrine 填充实体后(例如通过 $address = $addressRepo->find(123);
),你不会 运行 陷入这个问题。只有当您自己创建一个新实体然后尝试使用 getter 方法时才会发生这种情况。
可能的解决方案:
1.) 允许空值作为 return 值。在您的 return 类型提示前加上一个问号,如下所示:
/**
* @return string|null
*/
public function getLat(): ?string
{
return $this->lat;
}
但是如果您这样做,您的代码必须准备好处理来自这些方法的空值!
2.) 在对象中使用正确的数据类型定义默认值:
/**
* @var string
*
* @ORM\Column(name="lat", type="decimal", precision=10, scale=8, nullable=false)
*/
private $lat = "";
您的代码必须准备好将空字符串作为 return 值处理!或者,您也可以在构造函数方法中定义默认值。
3.) 通过将它们作为构造函数的参数来要求这些属性可用:
public function __constructor(string $lat, string $lng /*, add the other required properties */) {
$this->lat = $lat;
$this->lng = $lng;
// ... additional properties here ...
}
在这种情况下,您 必须 在使用 new Address(/* parameters go here */);
创建对象时提供值。
交响乐 5:
public function getSomething(): ?string
{
return $this->something;
}
public function setSomething(string $something): self
{
$this->something= $something;
return $this;
}
像这样从 (string $something) 中删除字符串,它应该可以工作,它对我有用
public function getSomething(): ?string
{
return $this->something;
}
public function setSomething($something): self
{
$this->something= $something;
return $this;
}