diff --git a/src/CoreBundle/Entity/Course.php b/src/CoreBundle/Entity/Course.php index 328635236f..f3f4457201 100644 --- a/src/CoreBundle/Entity/Course.php +++ b/src/CoreBundle/Entity/Course.php @@ -22,7 +22,6 @@ use Symfony\Component\Validator\Constraints as Assert; * @ORM\Table( * name="course", * indexes={ - * @ORM\Index(name="category_code", columns={"category_code"}), * @ORM\Index(name="directory", columns={"directory"}), * } * ) @@ -205,11 +204,12 @@ class Course extends AbstractResource implements ResourceInterface protected $description; /** - * @var string + * @var CourseCategory * - * @ORM\Column(name="category_code", type="string", length=40, nullable=true, unique=false) + * @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\CourseCategory", inversedBy="courses") + * @ORM\JoinColumn(name="category", referencedColumnName="id") */ - protected $categoryCode; + protected $category; /** * @var int @@ -772,13 +772,13 @@ class Course extends AbstractResource implements ResourceInterface /** * Set categoryCode. * - * @param string $categoryCode + * @param string $category * * @return Course */ - public function setCategoryCode($categoryCode) + public function setCategory($category) { - $this->categoryCode = $categoryCode; + $this->category = $category; return $this; } @@ -788,9 +788,9 @@ class Course extends AbstractResource implements ResourceInterface * * @return string */ - public function getCategoryCode() + public function getCategory() { - return $this->categoryCode; + return $this->category; } /** diff --git a/src/CoreBundle/Entity/CourseCategory.php b/src/CoreBundle/Entity/CourseCategory.php index 99ce8dd45c..ad483c254f 100644 --- a/src/CoreBundle/Entity/CourseCategory.php +++ b/src/CoreBundle/Entity/CourseCategory.php @@ -104,6 +104,13 @@ class CourseCategory */ protected $urls; + /** + * @var ArrayCollection + * + * @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\Course", mappedBy="category") + */ + protected $courses; + /** * Constructor. */ @@ -111,6 +118,7 @@ class CourseCategory { $this->childrenCount = 0; $this->children = new ArrayCollection(); + $this->courses = new ArrayCollection(); } /** @@ -373,4 +381,32 @@ class CourseCategory return $this; } + + /** + * @return ArrayCollection + */ + public function getCourses(): ArrayCollection + { + return $this->courses; + } + + /** + * @param ArrayCollection $courses + * + * @return CourseCategory + */ + public function setCourses(ArrayCollection $courses): CourseCategory + { + $this->courses = $courses; + + return $this; + } + + /** + * @param Course $course + */ + public function addCourse(Course $course) + { + $this->courses[] = $course; + } } diff --git a/src/CoreBundle/Migrations/Schema/V200/Version20191101132000.php b/src/CoreBundle/Migrations/Schema/V200/Version20191101132000.php new file mode 100644 index 0000000000..97d7686734 --- /dev/null +++ b/src/CoreBundle/Migrations/Schema/V200/Version20191101132000.php @@ -0,0 +1,37 @@ +getEntityManager(); + + $this->addSql('ALTER TABLE course ADD category INT DEFAULT NULL'); + $this->addSql('UPDATE course co SET co.category = (SELECT cat.id FROM course_category cat WHERE cat.code = co.category_code)'); + $this->addSql('DROP INDEX category_code ON course'); + $this->addSql('ALTER TABLE course DROP category_code'); + $this->addSql('ALTER TABLE course ADD CONSTRAINT FK_169E6FB964C19C1 FOREIGN KEY (category) REFERENCES course_category (id)'); + $this->addSql('CREATE INDEX IDX_169E6FB964C19C1 ON course (category)'); + } + + /** + * @param Schema $schema + */ + public function down(Schema $schema) + { + } +}