Builds a string containing an SQL statement template.
public generateAssociationQuery ( Model $Model, Model | null $LinkModel, string $type, string $association, array $assocData, &$queryData, boolean $external ) : mixed | ||
$Model | Model | Primary Model object. |
$LinkModel | Model | null | Linked model object. |
$type | string | Association type, one of the model association types ie. hasMany. |
$association | string | Association name. |
$assocData | array | Association data. |
$external | boolean | Whether or not the association query is on an external datasource. |
return | mixed | String representing a query. True, when $external is false and association $type is 'hasOne' or 'belongsTo'. |
/** * 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(); $resultSet = null; $null = null; $params = &$this->_prepareAssociationQuery($this->Model, $queryData, $binding); $result = $this->Dbo->generateAssociationQuery($this->Model, $params['linkModel'], $params['type'], $params['assoc'], $params['assocData'], $queryData, $params['external'], $resultSet); $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->generateAssociationQuery($this->Model, $null, null, null, null, $queryData, false, $null); $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; }