Cake\ORM\Table::addAssociations PHP Method

addAssociations() public method

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.
See also: Cake\ORM\Table::belongsTo()
See also: Cake\ORM\Table::hasOne()
See also: Cake\ORM\Table::hasMany()
See also: Cake\ORM\Table::belongsToMany()
public addAssociations ( array $params ) : void
$params array Set of associations to bind (indexed by association type)
return void
    public function addAssociations(array $params)
    {
        foreach ($params as $assocType => $tables) {
            foreach ($tables as $associated => $options) {
                if (is_numeric($associated)) {
                    $associated = $options;
                    $options = [];
                }
                $this->{$assocType}($associated, $options);
            }
        }
    }

Usage Example

Example #1
0
 /**
  * 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());
 }