public function testbelongsToAndHasManyRelationships() { $a = PicoraActiveRecord::create('Album', array('name' => 'Dark Side of the Moon', 'artist' => 'Pink Floyd', 'time' => '43:23', 'track_count' => 0)); $b = PicoraActiveRecord::create('Album', array('name' => 'Piper at the Gates of Dawn', 'artist' => 'Pink Floyd', 'time' => '42:10', 'track_count' => 0)); $a->reload(); $b->reload(); $this->assertEqual(array(), $a->getTrackList()); $this->assertEqual(array(), $b->getTrackList()); $this->assertEqual(0, $a->getTrackCount()); $this->assertEqual(0, $b->getTrackCount()); $this->assertEqual(0, $a->track_count); $this->assertEqual(0, $b->track_count); $a1 = $a->buildTrack(array('name' => 'Track 01', 'time' => '4:12')); $this->assertEqual($a->id, $a1->album_id); $this->assertTrue($a1->save()); $this->assertTrue($a->reload()); $this->assertEqual(array($a1), $a->getTrackList()); $this->assertEqual(array(), $b->getTrackList()); $this->assertEqual(1, $a->getTrackCount()); $this->assertEqual(0, $b->getTrackCount()); $this->assertEqual(1, $a->track_count); $this->assertEqual(0, $b->track_count); $a2 = $a->createTrack(array('name' => 'Track 02', 'time' => '5:03')); $a3 = $a->createTrack(array('name' => 'Track 03', 'time' => '3:46')); $a->reload(); $this->assertEqual(array($a1, $a2, $a3), $a->getTrackList()); $this->assertEqual(array($a1, $a3), $a->getTrackList(array('where' => 'tracks.id IN (' . $a1->id . ',' . $a3->id . ')', 'order' => 'tracks.id ASC'))); $this->assertEqual(array($a3, $a1), $a->getTrackList(array('where' => 'tracks.id IN (' . $a1->id . ',' . $a3->id . ')', 'order' => 'tracks.id DESC'))); $this->assertEqual(3, $a->getTrackCount()); $this->assertEqual(1, $a->getTrackCount(array('where' => 'tracks.id = ' . $a2->id))); $this->assertEqual(3, $a->track_count); $this->assertEqual(3, count(PicoraActiveRecord::findAll('Track'))); $this->assertEqual(1, $a->deleteTrack($a3->id)); $a->reload(); $this->assertEqual(2, $a->getTrackCount()); $this->assertEqual(2, $a->track_count); $a2->delete(); $a->reload(); $this->assertEqual(1, $a->getTrackCount()); $this->assertEqual(1, $a->track_count); $a1->delete(); $a->reload(); $this->assertEqual(0, $a->getTrackCount()); $this->assertEqual(0, $a->track_count); $a1 = $a->createTrack(array('name' => 'Track 01', 'time' => '4:12')); $a2 = $a->createTrack(array('name' => 'Track 02', 'time' => '5:03')); $a3 = $a->createTrack(array('name' => 'Track 03', 'time' => '3:46')); $a->reload(); $this->assertEqual(3, $a->getTrackCount()); $this->assertEqual(3, $a->track_count); $this->assertEqual(3, PicoraActiveRecord::count('Track')); $a->delete(); $this->assertEqual(0, PicoraActiveRecord::count('Track')); $this->assertFalse(PicoraActiveRecord::find('Track', $a1->id)); $this->assertFalse($a2->reload()); //test belongsTo $b1 = $b->createTrack(array('name' => 'Track 01', 'time' => '6:32')); $b2 = $b->createTrack(array('name' => 'Track 02', 'time' => '6:42')); $b->reload(); $this->assertEqual(2, $b->getTrackCount()); $this->assertEqual(2, $b->track_count); $this->assertEqual($b, $b1->getAlbum()); $c1 = PicoraActiveRecord::create('Track', array('name' => 'Track 01', 'time' => '5:11', 'album_id' => 0)); $d1 = PicoraActiveRecord::create('Track', array('name' => 'Track 01', 'time' => '5:11', 'album_id' => 0)); $this->assertFalse($c1->getAlbum()); $this->assertEqual(0, $c1->album_id); $c = $c1->createAlbum(array('name' => '69 Love Songs', 'artist' => 'Magnetic Fields', 'time' => '43:32')); $this->assertEqual($c->id, $c1->album_id); $this->assertEqual(1, $c->getTrackCount()); $this->assertEqual(1, $c->track_count); $c->createTrack(array('name' => 'Track 02', 'time' => '4:11')); $c->reload(); $this->assertEqual(2, $c->getTrackCount()); $this->assertEqual(2, $c->track_count); }
public static function findAllByLocal($local) { return PicoraActiveRecord::findAll('PicoraPing', array('where' => 'local = \'' . PicoraActiveRecord::escape($local) . '\' OR local = \'' . PicoraActiveRecord::escape($local) . '/\'')); }