У меня есть отношение многие к одному между сущностью, которая записывает заметки, и сущностью, в которой пользователь делает комментарии.т. е. один пользователь может сделать много комментариев.
Комментарии отображаются нормально при первом просмотре страницы, $ note-> employee-> user получает имя пользователя из таблицы employee на основе отношения «многие к одному»с таблицей заметок.Когда новая заметка добавляется посредством публикации формы:
$activity = new \S2\Entity\Crmnotes;
$activity->solicitorid = $solicitorid;
$activity->note = $activityDescription;
$activity->employeeid = 2;
$activity->type = $activityType;
$this->_em->persist($activity);
$this->_em->flush();
На странице будут отображаться данные из сущности заметок, но не из каких-либо ее связей, например, $ notes-> note, $ notes->тип display, но $ notes-> employee-> user вызывает попытку получить свойство необъектной ошибки.
При следующем посещении страницы все данные отображаются нормально, как обычно.
РЕДАКТИРОВАТЬ
В качестве дополнительной точки объект даты / времени $ note-> lastmodified также не отображается после вставки записи.Я получаю сообщение об ошибке вызова функции-члена format () для необъекта, когда пытаюсь отформатировать дату, например, $ note-> lastmodified-> format ('d / m / YH: i');
РЕДАКТИРОВАТЬ Да, это доктрина 2. В соответствии с просьбой:
namespace S2\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Crmnotes
*
* @Table(name="crmnotes")
* @Entity
*/
class Crmnotes extends \S2_Doctrine_Entity
{
/**
*
* @ORM\ManyToOne(targetEntity="S2\Entity\Tblsolicitor", inversedBy="crmnotes")
* @JoinColumn(name="SolicitorID", referencedColumnName="SolicitorID")
*
*/
private $solicitor;
/**
*
* @ORM\ManyToOne(cascade={"persist"}, targetEntity="S2\Entity\Tblemployees", inversedBy="crmnotes")
* @JoinColumn(name="EmployeeID", referencedColumnName="EmployeeID")
*
*/
private $employee;
/**
* @var integer $notesid
*
* @Column(name="notesid", type="integer", nullable=false)
* @Id
* @GeneratedValue(strategy="IDENTITY")
*/
private $notesid;
/**
* @var integer $type
*
* @Column(name="type", type="integer", nullable=false)
*/
private $type;
/**
* @var integer $solicitorid
*
* @Column(name="SolicitorID", type="integer", nullable=false)
*/
private $solicitorid;
/**
* @var text $note
*
* @Column(name="Note", type="text", nullable=false)
*/
private $note;
/**
* @var integer $employeeid
*
* @Column(name="EmployeeID", type="integer", nullable=false)
*/
private $employeeid;
/**
* @var datetime $lastmodified
*
* @Column(name="LastModified", type="datetime", nullable=false)
*/
private $lastmodified;
public function __get($name)
{
if (isset($this->$name)){
return $this->$name;
} else {
return '';
}
}
public function __set($name, $value)
{
$this->$name = $value;
}
}
РЕДАКТИРОВАТЬ
Все еще не радует использование объектов вместопытается вставить внешний ключ вручную:
$activity = new \S2\Entity\Crmnotes;
$activity->note = $activityDescription;
$activity->type = $activityType;
$solicitor = $this->_em->getRepository('\S2\Entity\Tblsolicitor')->find($solicitorid);
$solicitor->crmnotes->add($activity);
$activity->solicitor = $solicitor;
$employee = $this->_em->getRepository('\S2\Entity\Tblemployees')->find(2);
$this->view->debug = $solicitor->crmnotes[0]->note;
$employee->crmnotes->add($activity);
$activity->employee = $employee;
$this->_em->persist($activity);
$this->_em->flush();