belongsTo('AuthUsers', [ 'bindingKey' => 'username', 'foreignKey' => 'username', 'strategy' => $strategy ]); $result = $users->find() ->contain(['AuthUsers']); $expected = ['mariano', 'nate', 'larry', 'garrett']; $expected = array_combine($expected, $expected); $this->assertEquals( $expected, $result->combine('username', 'auth_user.username')->toArray() ); $expected = [1 => 1, 2 => 5, 3 => 2, 4 => 4]; $this->assertEquals( $expected, $result->combine('id', 'auth_user.id')->toArray() ); } /** * Tests that bindingKey can be used in hasOne associations * * @dataProvider strategiesProviderJoinable * @return void */ public function testHasOne($strategy) { $users = TableRegistry::get('Users'); $users->hasOne('SiteAuthors', [ 'bindingKey' => 'username', 'foreignKey' => 'name', 'strategy' => $strategy ]); $users->updateAll(['username' => 'jose'], ['username' => 'garrett']); $result = $users->find() ->contain(['SiteAuthors']) ->where(['username' => 'jose']) ->first(); $this->assertEquals(3, $result->site_author->id); } /** * Tests that bindingKey can be used in hasOne associations * * @dataProvider strategiesProviderExternal * @return void */ public function testHasMany($strategy) { $users = TableRegistry::get('Users'); $authors = $users->hasMany('SiteAuthors', [ 'bindingKey' => 'username', 'foreignKey' => 'name', 'strategy' => $strategy ]); $authors->updateAll(['name' => 'garrett'], ['id >' => 2]); $result = $users->find() ->contain(['SiteAuthors']) ->where(['username' => 'garrett']); $expected = [3, 4]; $result = $result->extract('site_authors.{*}.id')->toList(); $this->assertEquals($expected, $result); } }