Codeigniter 2 und Doctrine 2 HowTo 2/5
Ziel:
- Codeigniter 2 mit Doctrine 2 installieren
- Klasse erstellen und Datenbank anlegen
- Instanz einer Klasse erzeugen
- Containment Beziehung nutzen
- Containment Beziehung auslesen
2. Klasse erstellen und Datenbank anlegen
Ein einfaches Klassenmodell
Zwei Klassen aus dem Bereich Projektmanagement:
- Workpackage (Arbeitspakete)
- Task (Aufgaben)
Die zwei Klassen werden unter dem Ordner „Application/models/“ angelegt.
task.php
/**
* @Entity @HasLifecycleCallbacks
* @Table(name="task")
*/
class Task {
/**
* @Id
* @Column(type="integer", nullable=false)
* @GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @Column(type="string", length=512, nullable=true)
*/
private $comment;
/**
* @Column(type="string", length=512, nullable=true)
*/
private $title;
/**
* @Column(type="decimal", nullable=true)
*/
private $accounting;
/**
* @ManyToOne(targetEntity="Workpackage", inversedBy="task_collection")
* @JoinColumn(name="workpackage_id", referencedColumnName="id")
*/
private $workpackage;
public function __construct() {
}
public function getTitle(){
return $this->title;
}
public function setTitle($title){
$this->title = $title;
return $this;
}
public function getId(){
return $this->id;
}
}
workpackage.php
/**
* @Entity
* @Table(name="workpackage")
*/
class Workpackage {
/**
* @Id
* @Column(type="integer", nullable=false)
* @GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @Column(type="string", length=32, nullable=false)
*/
private $title;
/**
* @OneToMany(targetEntity="Task", mappedBy="Workpackage")
*/
private $task_collection;
public function __construct() {
$this->task_collection = new \Doctrine\Common\Collections\ArrayCollection();
}
public function getTitle(){
return $this->title;
}
public function setTitle($title){
$this->title = $title;
return $this;
}
public function getId(){
return $this->id;
}
}
Anlegen der Datenbank
Datenbankname: test_db
Ist die Datenbank angelegt, können die Tabellen über das Doctrine Script angelegt werden.
Konsole starten und das Schema erstellen bzw. updaten:
Durch das Script werden zwei Tabellen (Workpackage, Task) angelegt.
für die Tabelle Task wird automatisch die Spalte workspace_id die als Referenz erstellt.