Database: Add course category as foreign key to course - refs BT#15992

pull/3064/head
Angel Fernando Quiroz Campos 5 years ago
parent cf4f4ce4d7
commit b2310e95d3
  1. 18
      src/CoreBundle/Entity/Course.php
  2. 36
      src/CoreBundle/Entity/CourseCategory.php
  3. 37
      src/CoreBundle/Migrations/Schema/V200/Version20191101132000.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;
}
/**

@ -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;
}
}

@ -0,0 +1,37 @@
<?php
/* For licensing terms, see /license.txt */
namespace Chamilo\CoreBundle\Migrations\Schema\V200;
use Chamilo\CoreBundle\Migrations\AbstractMigrationChamilo;
use Doctrine\DBAL\Schema\Schema;
/**
* Class Version20191101132000.
*
* @package Chamilo\CoreBundle\Migrations\Schema\V200
*/
class Version20191101132000 extends AbstractMigrationChamilo
{
/**
* @param Schema $schema
*/
public function up(Schema $schema)
{
$this->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)
{
}
}
Loading…
Cancel
Save