我正在爲Symfony 3編寫一個非常簡單的API用於學習目的。我正在嘗試涵蓋服務領域。Symfony創建Doctrine ORM服務
我有一個存儲庫,我想注入Doctrine ORM,這樣做我想在我的services.xml文件中創建Doctrine ORM服務。
的services.xml:
<service
id="orm.doctrine.service"
class="Book\BookBundle\DoctrineORM\DoctrineRepo">
<argument type="service" id="doctrine.orm.entity_manager" />
</service>
<service
id="book.repo.create_book_repository"
class="Book\BookBundle\Repositories\CreateBookRepository">
<argument type="service" id="orm.doctrine.service" />
</service>
學說與作曲家安裝了供應商庫,因此我沒有爲它的一類在我的包。我反而試圖參考它。
DoctrineRepo:
<?php
namespace Book\BookBundle\DoctrineORM;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class DoctrineRepo extends Controller
{
private $db;
public function initDoctrine()
{
$this->db = $this->get('doctrine.orm.entity_manager');
return $this->db;
}
}
CreateBookRepository:
<?php
命名空間書\ BookBundle \庫;
使用Book \ BookBundle \ Entity \ BookEntity; 使用Book \ BookBundle \ DoctrineORM \ DoctrineRepo;
類CreateBookRepository {
private $db;
public function __construct(
DoctrineRepo $doctrineRepository
) {
$this->db = $doctrineRepository;
}
public function createRepository()
{
$product = new BookEntity();
$product->setTitle('Test Title');
$product->setAuthor('Leps');
$product->setReleaseDate(new \DateTime);
$product->setGender('Scfi');
$product->setDescription('Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in
voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt
mollit anim id est laborum.');
$em = $this->db->initDoctrine()->getDoctrine()->getManager();
$em->persist($product);
$em->flush();
}
}
什麼我這裏缺少或不理解......?
是否有嘗試創建自己的原則,而不是使用DoctrineBundle服務具體原因是什麼? – xabbuh