public function testManyEagerLoadsAndConstraints() { $manufacturers = Manufacturer::with(['Robots' => function ($builder) { $builder->where('id < 25'); }, 'Robots.Bugs' => function ($builder) { $builder->limit(2); }, 'Robots.Parts'], ['id < 50']); $this->assertEquals(array_sum(array_map(function ($o) { return count($o->robots); }, $manufacturers)), Robot::count(['id < 25 AND manufacturer_id < 50'])); $this->assertEquals(array_sum(array_map(function ($o) { $c = 0; foreach ($o->robots as $r) { $c += count($r->bugs); } return $c; }, $manufacturers)), 2); $manufacturers = Manufacturer::with(['Robots.Bugs' => function ($builder) { $builder->where('id > 10000'); }], ['limit' => 5, 'order' => 'id ASC']); $this->assertEquals(array_sum(array_map(function ($o) { return count($o->robots); }, $manufacturers)), Robot::count(['manufacturer_id < 6'])); $robots = array(); foreach ($manufacturers as $m) { $robots = array_merge($robots, $m->robots); } $this->assertEquals(array_sum(array_map(function ($o) { return count($o->bugs); }, $robots)), 0); }