Я хочу сохранить один из своих объектов-сущностей в сеансе, но при этом я получаю две следующие ошибки:
ErrorException: Примечание: serialize (): "id" возвращается как переменная-член из __sleep() но не существует в /var/www/clients/client71/web256/web/_dev_fd/kkupon/vendor/symfony/src/Symfony/Component/HttpKernel/DataCollector/DataCollector.php строка 29
10111012 * Мой код выглядит так:
$offer = $this->getEntityManager()->getRepository('KkuponMainBundle:Offer')->find($offer_id);
$request->getSession()->set('offer', $offer);
Как я могу сделать это правильно?
Спасибо.
ОБНОВЛЕНИЕ С помощью Rowgm яможет решить эту проблему, установив свойства, защищенные, а не частные.Единственная проблема, с которой я столкнулся, - это чтение сущности из сеанса, о котором EntityManager не знает, и если я добавлю объект (из сеанса) в другой объект (между ними есть связь OneToMany),это не будет работать.
<?php
$offer = $this->get('session')->get('offer');
$coupon = new Coupon();
$coupon->setOffer($offer);
$this->em->persist($coupon);
$this->em->flush();
Это вызывает ошибку, потому что купон имеет свойство объекта, которого в соответствии с EntityManager нет в базе данных (на самом деле он находится в БД, я помещаю в сеанс изБД).
<?php
$offer = $this->get('session')->get('offer');
echo $this->em->getUnitOfWork()->isInIdentityMap($offer) ? "yes":"no"; //result: no
Одним из решений может быть: $offer = $this->em->merge($offer);
Но, похоже, это не лучшее решение.Я хотел бы, чтобы мой EntityManager воспринимал объекты сущностей, хранящиеся в сеансе, не сообщая об этом каждый раз.Есть идеи?