Symfony 6
教义3
Titelmeta实体类
<?php
namespace App\Entity;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;
use DateTime;
/**
* Titelmeta
*
…
* @ORM\Entity
*/
class Titelmeta
{
…
/**
* @var \Isbn
*
* @ORM\Column(name="ISBN_mobi", type="bigint", nullable=false, options={"unsigned"=true})
* @ORM\ManyToOne(targetEntity="Isbn")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="ISBN_mobi", referencedColumnName="isbn")
* })
*/
private $isbnMobi;
…
public function getIsbnMobi(): ?Isbn
{
return $this->isbnMobi;
}
}
Isbn实体类
<?php
namespace App\Entity;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;
/**
* Isbn
*
* @ORM\Table(name="isbn", uniqueConstraints={@ORM\UniqueConstraint(name="isbn", columns={"isbn"})})
* @ORM\Entity
*/
class Isbn
{
/**
* @var int
*
* @ORM\Column(name="isbn", type="bigint", nullable=false, options={"unsigned"=true})
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $isbn;
…
public function __toString()
{
return (string) $this->getIsbn();
}
public function getIsbn(): ?string
{
return $this->isbn;
}
…
}
我有一个名为$record的结果对象
return($count);
App\Entity\Titelmeta {#901 ▼
-isbnMobi:“97812345678”
}
public void println();
App\Entity\Titelmeta::getIsbnMobi():返回值必须是类型?App\Entity\Isbn,返回字符串
我不明白有人能帮帮忙吗。
1条答案
按热度按时间piztneat1#
isbnMobi不应该是一个数字。在一个ORM中,如果你有对象之间的关系,它应该总是
null
,一个实际的对象,一个对象的代理,或者在多个对象的情况下,一个(代理)集合。因为你的isbnMobi不是一个对象,而是一个数字,这意味着你的ORM配置错误...Titlemeta实体不应在
isbnMobi
属性上具有@ORM\Column
。这些信息通过ManyToOne
的JoinColumn
处理。****************************************************************Column
的属性大部分可以分配给JoinColumn
。默认情况下,数据库列类型必须(自动)匹配引用的数据库列类型,nullable
是一个明显的例外。此外,同一属性上的
@var
应该只是Isbn
而不是\Isbn
,因为前导\
意味着它在根命名空间中。如果你使用的是php8,请使用属性而不是注解,并将typehints添加到属性中而不是
@var
(技术上没有绑定)。