addConnection([ 'driver' => 'sqlite', 'database' => ':memory:', ]); $db->bootEloquent(); $db->setAsGlobal(); $this->createSchema(); } /** * Setup the database schema. * * @return void */ public function createSchema() { $this->schema()->create('users', function ($table) { $table->increments('id'); $table->string('email')->unique(); }); $this->schema()->create('articles', function ($table) { $table->increments('aid'); $table->string('title'); }); $this->schema()->create('article_user', function ($table) { $table->integer('article_id')->unsigned(); $table->foreign('article_id')->references('aid')->on('articles'); $table->integer('user_id')->unsigned(); $table->foreign('user_id')->references('id')->on('users'); }); } public function testBelongsToChunkById() { $this->seedData(); $user = BelongsToManyChunkByIdTestTestUser::query()->first(); $i = 0; $user->articles()->chunkById(1, function (Collection $collection) use (&$i) { $i++; $this->assertEquals($i, $collection->first()->aid); }); $this->assertSame(3, $i); } /** * Tear down the database schema. * * @return void */ protected function tearDown(): void { $this->schema()->drop('users'); $this->schema()->drop('articles'); $this->schema()->drop('article_user'); } /** * Helpers... */ protected function seedData() { $user = BelongsToManyChunkByIdTestTestUser::create(['id' => 1, 'email' => 'taylorotwell@gmail.com']); BelongsToManyChunkByIdTestTestArticle::query()->insert([ ['aid' => 1, 'title' => 'Another title'], ['aid' => 2, 'title' => 'Another title'], ['aid' => 3, 'title' => 'Another title'], ]); $user->articles()->sync([3, 1, 2]); } /** * Get a database connection instance. * * @return \Illuminate\Database\ConnectionInterface */ protected function connection() { return Eloquent::getConnectionResolver()->connection(); } /** * Get a schema builder instance. * * @return \Illuminate\Database\Schema\Builder */ protected function schema() { return $this->connection()->getSchemaBuilder(); } } class BelongsToManyChunkByIdTestTestUser extends Eloquent { protected $table = 'users'; protected $fillable = ['id', 'email']; public $timestamps = false; public function articles() { return $this->belongsToMany(BelongsToManyChunkByIdTestTestArticle::class, 'article_user', 'user_id', 'article_id'); } } class BelongsToManyChunkByIdTestTestArticle extends Eloquent { protected $primaryKey = 'aid'; protected $table = 'articles'; protected $keyType = 'string'; public $incrementing = false; public $timestamps = false; protected $fillable = ['aid', 'title']; }