Cake\ORM\Table::addAssociations PHP 메소드

addAssociations() 공개 메소드

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.
또한 보기: Cake\ORM\Table::belongsTo()
또한 보기: Cake\ORM\Table::hasOne()
또한 보기: Cake\ORM\Table::hasMany()
또한 보기: Cake\ORM\Table::belongsToMany()
public addAssociations ( array $params ) : void
$params array Set of associations to bind (indexed by association type)
리턴 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

예제 #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());
 }