如何使方法中的参数有效?

时间:2019-09-05 16:48:19

标签: php function symfony methods parameters

在我实体中的一种方法中,我正在使用参数“ addlinkedDocuments”。

class Documents {
  /**
  * Many Documents link to many Documents.
  * @ORM\ManyToMany(targetEntity="App\Entity\Documents", fetch="EAGER")
  * @ORM\JoinTable(name="documents_documents",
  *      joinColumns={@JoinColumn(name="link_origin", referencedColumnName="id")},
  *      inverseJoinColumns={@JoinColumn(name="link_destination", referencedColumnName="id")}
  *      )
  * @Groups("documents")
  */
  private $linkedDocuments;


  public function __construct() {
    $this->linkedDocuments = new ArrayCollection();
  }



  /**
  * @return Collection|linkedDocuments[]
  */
  public function getlinkedDocuments(): Collection
  {
    return $this->linkedDocuments;
  }

  public function addlinkedDocuments(linkedDocuments $linkedDocuments): self
  {
    if (!$this->linkedDocuments->contains($linkedDocuments)) {
      $this->linkedDocuments[] = $linkedDocuments;
    }

    return $this;
  }

  public function removelinkedDocuments(linkedDocuments $linkedDocuments): self
  {
    if ($this->linkedDocuments->contains($linkedDocuments)) {
      $this->linkedDocuments->removeElement($linkedDocuments);
    }

    return $this;
  }

但是我收到错误消息:

  

方法中参数“ linkedDocuments”的类型提示   类“ App \ Entity \ Documents”中的“ addlinkedDocuments”无效。

1 个答案:

答案 0 :(得分:2)

据我所知,您在Documents上获得了自指多对多关系。

因此,任何给定的文档都可以与许多其他文档相关。

linkedDocuments仅仅是保存Documents集合的变量的名称。

我的观点是,链接文档的类型不是linkedDocuments,而是Documents,因此应相应更改类型提示:

/**
 * @return Collection|Document[]
 */
 public function getlinkedDocuments(): Collection
 {
     return $this->linkedDocuments;
 }

 public function addlinkedDocument(Document $linkedDocument): self
 {
     if (!$this->linkedDocuments->contains($linkedDocument)) {
         $this->linkedDocuments[] = $linkedDocument;
     } 

     return $this;
 }

 public function removelinkedDocument(Document $linkedDocument): self
 {
     if ($this->linkedDocuments->contains($linkedDocument)) {
         $this->linkedDocuments->removeElement($linkedDocument);
     }

     return $this;
 }

编辑:按照塞拉德的建议,我已经去掉了方法,并将其重命名以更好地反映复数。因此,您的类应称为Document,以便任何给定的文档都可以链接到许多文档。