Symfony,无法链接getter方法

qhhrdooz  于 2023-06-24  发布在  其他
关注(0)|答案(1)|浏览(94)

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,返回字符串

我不明白有人能帮帮忙吗。

piztneat

piztneat1#

isbnMobi不应该是一个数字。在一个ORM中,如果你有对象之间的关系,它应该总是null,一个实际的对象,一个对象的代理,或者在多个对象的情况下,一个(代理)集合。因为你的isbnMobi不是一个对象,而是一个数字,这意味着你的ORM配置错误...
Titlemeta实体不应在isbnMobi属性上具有@ORM\Column。这些信息通过ManyToOneJoinColumn处理。****************************************************************
Column的属性大部分可以分配给JoinColumn。默认情况下,数据库列类型必须(自动)匹配引用的数据库列类型,nullable是一个明显的例外。
此外,同一属性上的@var应该只是Isbn而不是\Isbn,因为前导\意味着它在根命名空间中。
如果你使用的是php8,请使用属性而不是注解,并将typehints添加到属性中而不是@var(技术上没有绑定)。

相关问题