buildAssociationQuery() public method

This is merely a convenient wrapper to DboSource::buildStatement().
See also: DboSource::buildStatement()
public buildAssociationQuery ( Model $Model, array $queryData ) : string
$Model Model The model to build an association query for.
$queryData array An array of queryData information containing keys similar to Model::find().
return string String containing an SQL statement.
Example #1
0
 /**
  * testGenerateAssociationQueryHasAndBelongsToManyWithPageAndLimit method
  *
  * @return void
  */
 public function testGenerateAssociationQueryHasAndBelongsToManyWithPageAndLimit()
 {
     $this->Model = new TestModel4();
     $this->Model->schema();
     $this->_buildRelatedModels($this->Model);
     $backup = $this->Model->hasAndBelongsToMany['TestModel7'];
     $this->Model->hasAndBelongsToMany['TestModel7']['page'] = 2;
     $this->Model->hasAndBelongsToMany['TestModel7']['limit'] = 5;
     $binding = array('type' => 'hasAndBelongsToMany', 'model' => 'TestModel7');
     $queryData = array();
     $params =& $this->_prepareAssociationQuery($this->Model, $queryData, $binding);
     $result = $this->Dbo->generateAssociationQuery($this->Model, $params['linkModel'], $params['type'], $params['assoc'], $params['assocData'], $queryData, $params['external']);
     $this->assertRegExp('/^SELECT\\s+`TestModel7`\\.`id`, `TestModel7`\\.`name`, `TestModel7`\\.`created`, `TestModel7`\\.`updated`, `TestModel4TestModel7`\\.`test_model4_id`, `TestModel4TestModel7`\\.`test_model7_id`\\s+/', $result);
     $this->assertRegExp('/\\s+FROM\\s+\\S+`test_model7`\\s+AS\\s+`TestModel7`\\s+JOIN\\s+\\S+`test_model4_test_model7`\\s+AS\\s+`TestModel4TestModel7`/', $result);
     $this->assertRegExp('/\\s+ON\\s+\\(`TestModel4TestModel7`\\.`test_model4_id`\\s+=\\s+{\\$__cakeID__\\$}/', $result);
     $this->assertRegExp('/\\s+AND\\s+`TestModel4TestModel7`\\.`test_model7_id`\\s+=\\s+`TestModel7`\\.`id`\\)\\s+WHERE\\s+/', $result);
     $this->assertRegExp('/\\s+(?:\\()?1\\s+=\\s+1(?:\\))?\\s*\\s+LIMIT 5,\\s*5\\s*$/', $result);
     $result = $this->Dbo->buildAssociationQuery($this->Model, $queryData);
     $this->assertRegExp('/^SELECT\\s+`TestModel4`\\.`id`, `TestModel4`\\.`name`, `TestModel4`\\.`created`, `TestModel4`\\.`updated`\\s+/', $result);
     $this->assertRegExp('/\\s+FROM\\s+\\S+`test_model4` AS `TestModel4`\\s+WHERE\\s+(?:\\()?1\\s+=\\s+1(?:\\))?\\s*$/', $result);
     $this->Model->hasAndBelongsToMany['TestModel7'] = $backup;
 }