It takes an array containing set of table names indexed by association type
as argument:
$this->Posts->addAssociations([
'belongsTo' => [
'Users' => ['className' => 'App\Model\Table\UsersTable']
],
'hasMany' => ['Comments'],
'belongsToMany' => ['Tags']
]);
Each association type accepts multiple associations where the keys
are the aliases, and the values are association config data. If numeric
keys are used the values will be treated as association aliases.
public addAssociations ( array $params ) : void | ||
$params | array | Set of associations to bind (indexed by association type) |
return | void |
/** * Test addAssociations() * * @return void */ public function testAddAssociations() { $params = ['belongsTo' => ['users' => ['foreignKey' => 'fake_id', 'conditions' => ['a' => 'b']]], 'hasOne' => ['profiles'], 'hasMany' => ['authors'], 'belongsToMany' => ['tags' => ['joinTable' => 'things_tags']]]; $table = new Table(['table' => 'dates']); $table->addAssociations($params); $associations = $table->associations(); $belongsTo = $associations->get('users'); $this->assertInstanceOf('Cake\\ORM\\Association\\BelongsTo', $belongsTo); $this->assertEquals('users', $belongsTo->name()); $this->assertEquals('fake_id', $belongsTo->foreignKey()); $this->assertEquals(['a' => 'b'], $belongsTo->conditions()); $this->assertSame($table, $belongsTo->source()); $hasOne = $associations->get('profiles'); $this->assertInstanceOf('Cake\\ORM\\Association\\HasOne', $hasOne); $this->assertEquals('profiles', $hasOne->name()); $hasMany = $associations->get('authors'); $this->assertInstanceOf('Cake\\ORM\\Association\\hasMany', $hasMany); $this->assertEquals('authors', $hasMany->name()); $belongsToMany = $associations->get('tags'); $this->assertInstanceOf('Cake\\ORM\\Association\\BelongsToMany', $belongsToMany); $this->assertEquals('tags', $belongsToMany->name()); $this->assertSame('things_tags', $belongsToMany->junction()->table()); }