49 lines
1.3 KiB
Plaintext
49 lines
1.3 KiB
Plaintext
|
+++ Introduction
|
||
|
|
||
|
In Doctrine all record relations are being set with {{hasMany}}, {{hasOne}}, {{ownsMany}} and {{ownsOne}} methods. Doctrine supports almost any kind of database relation from simple one-to-one foreign key relations to join table self-referencing relations.
|
||
|
|
||
|
|
||
|
+++ Relation aliases
|
||
|
|
||
|
Doctrine supports relation aliases through {{as}} keyword.
|
||
|
|
||
|
<code type="php">
|
||
|
class Forum_Board extends Doctrine_Record {
|
||
|
public function setTableDefinition() {
|
||
|
$this->hasColumn('name', 'string', 100);
|
||
|
$this->hasColumn('description', 'string', 5000);
|
||
|
}
|
||
|
public function setUp() {
|
||
|
// notice the 'as' keyword here
|
||
|
$this->ownsMany('Forum_Thread as Threads', 'Forum_Thread.board_id');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
class Forum_Thread extends Doctrine_Record {
|
||
|
public function setTableDefinition() {
|
||
|
$this->hasColumn('board_id', 'integer', 10);
|
||
|
$this->hasColumn('updated', 'integer', 10);
|
||
|
$this->hasColumn('closed', 'integer', 1);
|
||
|
}
|
||
|
public function setUp() {
|
||
|
// notice the 'as' keyword here
|
||
|
$this->hasOne('Forum_Board as Board', 'Forum_Thread.board_id');
|
||
|
}
|
||
|
}
|
||
|
$board = new Board();
|
||
|
$board->Threads[0]->updated = time();
|
||
|
</code>
|
||
|
|
||
|
|
||
|
+++ Foreign key associations
|
||
|
|
||
|
|
||
|
+++ Join table associations
|
||
|
|
||
|
|
||
|
+++ Inheritance
|
||
|
|
||
|
|
||
|
+++ Foreign key constraints
|
||
|
|