Example #1
0
 /**
  * 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;
 }
Example #2
0
 public function loadForeign(Models $models, $flags = null)
 {
     $keys = $models->pluckPropertyUnique($this->key);
     return $this->getForeignRepo()->findAll()->whereIn('id', $keys)->setFlags($flags)->loadRaw();
 }
Example #3
0
 /**
  * @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);
     }
 }
Example #4
0
 /**
  * @return int
  */
 public function count()
 {
     return $this->models->count();
 }
Example #5
0
 /**
  * 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);
     }
 }
Example #6
0
 /**
  * If model doesn't exist, return a void model
  *
  * @return AbstractModel
  */
 public function getNext()
 {
     return parent::getNext() ?: $this->getRepo()->newVoidModel();
 }
Example #7
0
 /**
  * @return boolean
  */
 public function valid()
 {
     return $this->current->valid();
 }