У меня есть эти сущности в Symfony 3.4:
class Status {
/*
* @var int
*/
public $id;
/*
* @var string
*/
public $name;
/*
* @var StatusLabel $label
*
* @ManyToOne(targetEntity="StatusLabel")
* @JoinColumn(name="statusLabelId", referencedColumnName="id")
*/
public $label;
/*
* @return StatusLabel
*/
public function getLabel($activity) // Needs an activity as an argument
{
return $this->label;
}
}
class Activity {
/*
* @var int
*/
public $id;
/*
* @var string
*/
public $name;
}
class StatusLabel {
/*
* @var int
*/
public $id;
/*
* @var int
*/
public $statusId;
/*
* @var int
*/
public $activityId;
/*
* @return string
*/
public $label;
}
Новая сущность, которая позволяет нам устанавливать метку для статуса, уникальную для статуса, называется активностью StatusLabel.Таблицы имеют следующие атрибуты:
Status
--------
| id | name |
StatusLabel
--------
| id | activityId | statusId | label |
Activity
--------
| id | name |
Попытка использовать аннотации для определения объединения, чтобы я мог получить StatusLabel.label, если у меня есть активность, например:
$activity = $this->getDoctrine()->getRepository('Entity\Activity')->findOneBy(['slug' => 'outdoors-activity']);
/** @var StatusLabel $activityStatusLabel */
$activityStatusLabel = $userActivity->getStatus()->getLabel($activity);
echo $activityStatusLabel->getLabel();
Было бы лучше, чтобы действие передавалось автоматически, но я не могу понять, как это сделать с помощью аннотаций ORM.Я не хочу запрашивать у сущности!