. */ /** * Doctrine_Ticket424B_TestCase * * This test case tests many-many relationship with non-autoincrement, alias primary key * * @package Doctrine * @author Tamcy <7am.online@gmail.com> * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @category Object Relational Mapping * @link www.phpdoctrine.com * @since 1.0 * @version $Revision$ */ class Doctrine_Ticket_424C_TestCase extends Doctrine_UnitTestCase { public function prepareData() { } public function prepareTables() { $this->tables = array('mmrUser_C', 'mmrGroup_C', 'mmrGroupUser_C'); parent::prepareTables(); } protected function newGroup($code, $name) { $group = new mmrGroup_C(); $group->id = $code; $group->name = $name; $group->save(); return $group; } protected function newUser($code, $name, $groups) { $u = new mmrUser_C(); $u->id = $code; $u->name = $name; foreach ($groups as $idx=>$group) { $u->Group[$idx] = $group; } $u->save(); return $u; } public function testManyManyRelationWithAliasColumns() { $groupA = $this->newGroup(1, 'Group A'); $groupB = $this->newGroup(2, 'Group B'); $groupC = $this->newGroup(3, 'Group C'); $john = $this->newUser(1, 'John', array($groupA, $groupB)); $peter = $this->newUser(2, 'Peter', array($groupA, $groupC)); $alan = $this->newUser(3, 'Alan', array($groupB, $groupC)); $q = new Doctrine_Query(); $gu = $q->from('mmrGroupUser_C')->execute(); $this->assertEqual(count($gu), 6); // Direct query $q = new Doctrine_Query(); $gu = $q->from('mmrGroupUser_C')->where('group_id = ?', $groupA->id)->execute(); $this->assertEqual(count($gu), 2); // Query by join $q = new Doctrine_Query(); $userOfGroupAByName = $q->from('mmrUser_C u, u.Group g') ->where('g.name = ?', array($groupA->name)); $q->execute(); $this->assertEqual(count($userOfGroupAByName), 2); } }