This is merely a convenient wrapper to 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. |
/** * 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; }