我有以下情况:
/**
* @ApiResource()
*/
class Book {
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
private $title;
/**
* @ORM\OneToMany(targetEntity="App\Entity\BookLibrary", mappedBy="book")
*/
private $bookLibraries;
/**
* @ApiSubresource()
*/
private $libraries;
// Getters and setters
public function getLibraries() {
if (!$this->libraries) {
$this->libraries = new ArrayCollection();
foreach ($this->getBookLibraries() as $bookLibrary) {
$this->libraries->add($bookLibrary->getLibrary());
}
}
return $this->libraries;
}
}
class Library {
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
private $name;
/**
* @ORM\OneToMany(targetEntity="App\Entity\BookLibrary", mappedBy="library")
*/
private $bookLibraries;
private $books;
// Getters and setters
public function getBooks() {
if (!$this->books) {
$this->books = new ArrayCollection();
foreach ($this->getBookLibraries() as $bookLibrary) {
$this->books->add($bookLibrary->getBook());
}
}
return $this->books;
}
}
class BookLibrary {
/**
* @ORM\Id()
* @ORM\ManyToOne(targetEntity="App\Entity\Library", inversedBy="bookLibraries")
* @ORM\JoinColumn(nullable=false)
*/
private $library;
/**
* @ORM\Id()
* @ORM\ManyToOne(targetEntity="App\Entity\Book", inversedBy="bookLibraries")
* @ORM\JoinColumn(nullable=false)
*/
private $book;
/**
* @ORM\Column(type="integer")
*/
private $timesOpened;
// getters and setters
}
但是,当尝试获取子资源时,这又回来了:
{
"@context": "/api/contexts/Error",
"@type": "hydra:Error",
"hydra:title": "An error occurred",
"hydra:description": "[Syntax Error] line 0, col 54: Error: Unexpected 'WHERE'"
...
}
是否可以在连接关系仅保存内部数据的情况下创建此类子资源?我是否需要为此创建一个DTO?解决此问题的最佳方法是什么?
有关的API平台为v2.5.6。