public function testHasManyRelationFetch()
 {
     $author = new \AuthorBooks\Model\Author();
     $ret = $author->create(array('name' => 'Z', 'email' => 'z@z', 'identity' => 'z'));
     $this->assertResultSuccess($ret);
     ok($author->id);
     $address = new \AuthorBooks\Model\Address();
     $ret = $address->create(array('author_id' => $author->id, 'address' => 'Taiwan Taipei'));
     $this->assertResultSuccess($ret);
     $this->assertNotNull($address->author, 'has many relation fetch');
     $this->assertNotNull($address->author->id);
     $this->assertEquals($author->id, $address->author->id);
     $ret = $address->create(array('author_id' => $author->id, 'address' => 'Taiwan Taipei II'));
     $this->assertResultSuccess($ret);
     // xxx: provide getAddresses() method generator
     $addresses = $author->addresses;
     $this->assertCollectionSize(2, $addresses);
     $items = $addresses->items();
     ok($items);
     ok($addresses[0]);
     ok($addresses[1]);
     ok(!isset($addresses[2]));
     ok(!@$addresses[2]);
     ok($addresses[0]->id);
     ok($addresses[1]->id);
     ok($size = $addresses->size());
     is(2, $size);
     foreach ($author->addresses as $ad) {
         ok($ad->delete()->success);
     }
     $author->delete();
 }
예제 #2
0
 public function testCloneWithQuery()
 {
     $a = new \AuthorBooks\Model\Address();
     ok($a->create(array('address' => 'Cindy'))->success);
     ok($a->create(array('address' => 'Hack'))->success);
     $addresses = new \AuthorBooks\Model\AddressCollection();
     $addresses->where()->equal('address', 'Cindy');
     $addresses->fetch();
     is(1, $addresses->size());
     $sql1 = $addresses->toSQL();
     $clone = clone $addresses;
     $sql2 = $clone->toSQL();
     is($sql1, $sql2);
     is(1, $clone->size());
     $clone->free();
     $clone->where()->equal('address', 'Hack');
     is(0, $clone->size());
 }
예제 #3
0
 public function testHasManyRelationFetch()
 {
     $author = new \AuthorBooks\Model\Author();
     $ret = $author->create(array('name' => 'Z', 'email' => 'z@z', 'identity' => 'z'));
     $this->assertResultSuccess($ret);
     $address = new \AuthorBooks\Model\Address();
     $ret = $address->create(array('author_id' => $author->id, 'address' => 'Taiwan Taipei'));
     $this->assertResultSuccess($ret);
     $this->assertInstanceOf('LazyRecord\\BaseModel', $address->author);
     $this->assertEquals($author->id, $address->author->id);
     $ret = $address->create(array('author_id' => $author->id, 'address' => 'Taiwan Taipei II'));
     $this->assertResultSuccess($ret);
     // xxx: provide getAddresses() method generator
     $addresses = $author->addresses;
     $this->assertInstanceOf('LazyRecord\\BaseCollection', $addresses);
     $items = $addresses->items();
     $this->assertNotEmpty($items);
     $this->assertCount(2, $items);
 }