/** * @param LinkMany $link */ public function update(LinkMany $link) { foreach ($link->getAdded() as $added) { $added->{$this->getForeignKey()} = $link->getModel()->{$this->getKey()}; } foreach ($link->getRemoved() as $added) { $added->{$this->getForeignKey()} = null; } }
public function insert(LinkMany $link) { $inserted = new Models(); if (count($link->getAdded()) > 0) { $through = $link->getModel()->getLink($this->through); $repo = $this->getThroughRepo(); foreach ($link->getAdded() as $added) { $inserted->add($repo->newModel([$this->getKey() => $link->getModel()->getId(), $this->getForeignKey() => $added->getId()])); } $through->get()->addAll($inserted); } return $inserted; }
/** * @covers ::getAdded */ public function testGetAdded() { $link = new LinkMany(new Country(), Country::getRepo()->getRel('cities'), [new City()]); $models = [new City(), new City()]; $link->add($models[0]); $link->add($models[1]); $added = $link->getAdded(); $this->assertInstanceOf('Harp\\Harp\\Model\\Models', $added); $this->assertSame($models, $added->toArray()); }