示例#1
0
文件: HasOne.php 项目: harp-orm/harp
 public function update(LinkOne $link)
 {
     if ($link->isChanged()) {
         $link->get()->{$this->getForeignKey()} = $link->getModel()->{$this->getKey()};
         $link->getOriginal()->{$this->getForeignKey()} = null;
     }
 }
示例#2
0
 /**
  * @covers ::getModels
  */
 public function testGetModels()
 {
     $model1 = new Address();
     $model2 = new Post();
     $model3 = new Post();
     $links = new Links(new User());
     $linkOne = new LinkOne(new User(), User::getRepo()->getRel('address'), new Address());
     $linkMany = new LinkMany(new User(), User::getRepo()->getRel('posts'), []);
     $linkOne->set($model1);
     $linkMany->add($model2)->add($model3);
     $links->add($linkOne)->add($linkMany);
     $result = $links->getModels();
     $this->assertInstanceOf('Harp\\Harp\\Model\\Models', $result);
     $this->assertTrue($result->has($model1));
     $this->assertTrue($result->has($model2));
     $this->assertTrue($result->has($model3));
 }
示例#3
0
 /**
  * @covers ::add
  */
 public function testAdd()
 {
     $save = new Save();
     $models = [0 => new User(), 1 => new Address(), 2 => new Country(), 3 => new City(), 4 => new City(), 5 => new City(), 6 => new Address()];
     $link1 = new LinkOne($models[0], User::getRepo()->getRel('address'), $models[1]);
     $link1->set($models[6]);
     $link2 = new LinkMany($models[2], Country::getRepo()->getRel('cities'), [$models[3], $models[4]]);
     $link2->remove($models[3]);
     $link2->add($models[5]);
     User::getRepo()->addLink($link1);
     Country::getRepo()->addLink($link2);
     $save->add($models[0])->add($models[2]);
     $this->assertCount(count($models), $save);
     foreach ($models as $model) {
         $this->assertTrue($save->has($model));
     }
 }
示例#4
0
 /**
  * @covers ::getCurrentAndOriginal
  */
 public function testGetCurrentAndOriginal()
 {
     $model = new Country();
     $model2 = new Country();
     $link = new LinkOne(new City(), City::getRepo()->getRel('country'), $model);
     $result = $link->getCurrentAndOriginal();
     $this->assertTrue($result->has($model));
     $this->assertCount(1, $result);
     $link->set($model2);
     $result = $link->getCurrentAndOriginal();
     $this->assertTrue($result->has($model));
     $this->assertTrue($result->has($model2));
     $this->assertCount(2, $result);
 }
示例#5
0
 /**
  * @covers ::update
  */
 public function testUpdate()
 {
     $rel = new HasOne('city', Country::getRepo()->getConfig(), 'Harp\\Harp\\Test\\TestModel\\City');
     $model = new Country(['id' => 20]);
     $old = new City(['countryId' => 20]);
     $foreign = new City(['countryId' => 2]);
     $link = new LinkOne($model, $rel, $old);
     $link->set($foreign);
     $rel->update($link);
     $this->assertEquals(20, $foreign->countryId);
     $this->assertNull($old->countryId);
 }
示例#6
0
 public function update(LinkOne $link)
 {
     $link->getModel()->{$this->key} = $link->get()->getId();
     $link->getModel()->{$this->classKey} = get_class($link->get());
 }
示例#7
0
 /**
  * @param  LinkOne       $link
  */
 public function update(LinkOne $link)
 {
     $link->getModel()->{$this->getKey()} = $link->get()->getId();
 }