Есть 2 объекта Курсы и UserTask. Они имеют отношение OneToMany, соответственно. По какой-то причине, когда пользователь входит в систему и выполняет задачу в моем приложении, идентификатор курса не устанавливается для базы данных, хотя курс и пользовательская задача связаны. В этом случае устанавливаются все остальные поля, например userId. И код абсолютно идентичен рабочим примерам. Если вы вручную сохраняете идентификатор курса в базе данных, он работает, но мне нужно, чтобы этот идентификатор курса автоматически устанавливался при вводе пользователем какой-либо задачи. Подскажите пожалуйста может я что то пропустил? Как вы можете видеть на скриншоте, у меня все поля заполнены, но courseId пуст Изображение базы данных
Это мой объект курсов
/**
* @ORM\OneToMany( targetEntity="UserTask", mappedBy="courses", cascade={"persist"}, orphanRemoval=true )
*/
private $userTask;
public function __construct()
{
$this->userTask = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
* @return ArrayCollection
*/
public function getUserTask()
{
return $this->userTask;
}
/**
* @param mixed $userTask
* @return Courses
*/
public function setUserTask($userTask)
{
if (count($userTask) > 0) {
foreach ($userTask as $i) {
$this->addUserTask($i);
}
}
return $this;
}
/**
* @param UserTask $userTask
*/
public function addUserTask(UserTask $userTask)
{
$userTask->setCourses($this);
$this->userTask->add($userTask);
}
/**
* @param UserTask $userTask
*/
public function removeUserTask(UserTask $userTask)
{
$this->userTask->removeElement($userTask);
}
Это мой объект UserTasks
/**
* @ORM\ManyToOne(targetEntity="Courses", inversedBy="userTask")
*/
private $courses;
/**
* @param Courses $courses
* @return UserTask
*/
public function setCourses(Courses $courses)
{
$this->courses = $courses;
return $this;
}
/**
* @return Courses
*/
public function getCourses(): ?Courses
{
return $this->courses;
}
Мой контроллер
/**
* @Rest\Get("/v2/courses", name="show_all_courses")
* @param CoursesRepository $coursesRepository
* @param UserTaskRepository $userTaskRepository
* @param TaskRepository $taskRepository
* @return Response
*/
public function showAllCourses(
CoursesRepository $coursesRepository,
UserTaskRepository $userTaskRepository,
TaskRepository $taskRepository
)
{
/** @var \App\Entity\User $user */
$user = $this->getUser();
$courses = $coursesRepository->findAll();
$total = $taskRepository->count(['courses' => $courses]);
$userTasks = $userTaskRepository->count(['status' => UserTask::SUCCESS, 'user' => $user, 'courses' => $courses]);
if ($total && $userTasks) {
$calculation = ceil(100.0 / $total * $userTasks);
}
$coursesResult = [];
foreach ($courses as $course) {
$coursesResult[] = [
"id" => $course->getId(),
"title" => $course->getTitle(),
"description" => $course->getDescription(),
"progress" => $calculation ?? 0
];
}
return $this->handleView($this->view($coursesResult));
}