В моем проекте symfony я пытаюсь вызвать доктрину из объекта класса, идея состоит в том, чтобы поместить информацию в базу данных из конструктора объекта.База данных Symfony от объекта класса
Прежде всего, я должен проверить, находится ли объект в базе данных, а если нет, я должен создать объект и добавить его в базу данных. Я делаю это из объекта класса, потому что много информации выполняется в одном цикле, и для оптимизации я хотел бы сделать это с объекта.
Мой объект:
/** class object */
use MainBundle\Services\UserService;
use MainBundle\Entity\Item;
use MainBundle\Entity\User;
use Doctrine\ORM\Mapping as ORM;
class MyListObject{
function MyListObject($data,$bddUser=null){
if ($data->getSuccess()){
foreach($data->getIdItem() as $id){
$item = new IntItem($id,$data,$this);
//database stuff
$repository = $this->get('service.item');//get the table user from the database
$existItem = $repository->getItemById($id);//get the item
if ($existItem == null){
$itemBdd = new Item();
$itemBdd->setIditem($item->getId());
$itemBdd->setIdfull($item->getClassIdFull());
$itemBdd->setName($item->getName());
}
Моя служба:
services:
service.item:
class: MainBundle\Services\ItemService
arguments: ['@doctrine.orm.default_entity_manager']
Мой класс обслуживания:
<?
class ItemService
{
private $entityManager;
/*
* @param EntityManager $entityManager
*/
public function __construct(EntityManager $entityManager)
{
$this->entityManager = $entityManager;
}
/*
* @param integer $blogId
*
* @return Blog
*/
public function getItemById($itemId)
return $this->entityManager
->getRepository('MainBundle:Item')
->find($itemId);
}
}
Тогда я получил эту ошибку:
Attempted to call an undefined method named "get" of class "MainBundle\Object\MyListObject".
И после этого я хочу снова вызвать доктрину из моего объекта, чтобы добавить элемент в базу данных. Я действительно не знаю, как я могу это исправить. все инъекции, которые я пытаюсь сделать, не сработали, я также пытаюсь расширить контроллер, но я получаю еще одну ошибку.
Спасибо. быть хорошим с моим английским, пожалуйста, я постараюсь изо всех сил!
Я действительно не знаю, куда я иду неправильно
на этот раз я получил эту ошибку: 'Ошибка: вызов функции члена ГЭТ() на не-объект' – Chardon
я редактировал свой ответ (просто забыл поставить функцию) –
Я уже помещаю его в функцию. Я использую symfony 3, поэтому ContainerAware больше не доступен. Я использую 'use Symfony \ Component \ DependencyInjection \ ContainerAwareInterface; использовать Symfony \ Component \ DependencyInjection \ ContainerAwareTrait; 'это, а также я реализую' ContainerAwareInterface' и добавляю использование 'use ContainerAwareTrait'' внутри класса – Chardon