/** * Get all of the linked models * * @return Models */ public function getModels() { $all = new Models(); foreach ($this->items as $item) { $all->addAll($item->getCurrentAndOriginal()); } return $all; }
public function loadForeign(Models $models, $flags = null) { $keys = $models->pluckPropertyUnique($this->key); return $this->getForeignRepo()->findAll()->whereIn('id', $keys)->setFlags($flags)->loadRaw(); }
/** * @covers ::current * @covers ::key * @covers ::next * @covers ::rewind * @covers ::valid */ public function testIterator() { $source = [new Model(), new Model()]; $models = new Models($source); $key = $models->key(); foreach ($models as $i => $model) { $this->assertSame(current($source), $model); next($source); } }
/** * @return int */ public function count() { return $this->models->count(); }
/** * Group models by repo, call yield for each repo * * @param Closure $yield Call for each repo ($repo, $models) */ public function byRepo(Closure $yield) { $repos = Objects::groupBy($this->models, function (AbstractModel $model) { return $model->getRepo()->getRootRepo(); }); foreach ($repos as $repo) { $models = new Models(); $models->addObjects($repos->getInfo()); $yield($repo, $models); } }
/** * If model doesn't exist, return a void model * * @return AbstractModel */ public function getNext() { return parent::getNext() ?: $this->getRepo()->newVoidModel(); }
/** * @return boolean */ public function valid() { return $this->current->valid(); }