Builds and generates a JOIN condition from an array. Handles final clean-up before conversion.
public buildJoinStatement ( array $join ) : string | ||
$join | array | An array defining a JOIN condition in a query. |
Résultat | string | An SQL JOIN condition to be used in a query. |
/** * testGenerateAssociationQueryBelongsToWithConditions method * * @return void */ public function testGenerateAssociationQueryBelongsToWithConditions() { $this->Model = new TestModel5(); $this->Model->schema(); $this->_buildRelatedModels($this->Model); $binding = array('type' => 'belongsTo', 'model' => 'TestModel4'); $queryData = array('conditions' => array('TestModel5.name !=' => 'mariano')); $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->assertTrue($result); $testModel4Table = $this->Dbo->fullTableName($this->Model->TestModel4, true, true); $result = $this->Dbo->buildJoinStatement($queryData['joins'][0]); $expected = ' LEFT JOIN ' . $testModel4Table . ' AS `TestModel4` ON (`TestModel5`.`test_model4_id` = `TestModel4`.`id`)'; $this->assertEquals(trim($expected), trim($result)); $result = $this->Dbo->generateAssociationQuery($this->Model, $null, null, null, null, $queryData, false, $null); $this->assertRegExp('/^SELECT\s+`TestModel5`\.`id`, `TestModel5`\.`test_model4_id`, `TestModel5`\.`name`, `TestModel5`\.`created`, `TestModel5`\.`updated`, `TestModel4`\.`id`, `TestModel4`\.`name`, `TestModel4`\.`created`, `TestModel4`\.`updated`\s+/', $result); $this->assertRegExp('/\s+FROM\s+\S+`test_model5` AS `TestModel5`\s+LEFT JOIN\s+\S+`test_model4` AS `TestModel4`/', $result); $this->assertRegExp('/\s+ON\s+\(`TestModel5`.`test_model4_id` = `TestModel4`.`id`\)\s+WHERE\s+/', $result); $this->assertRegExp('/\s+WHERE\s+`TestModel5`.`name` != \'mariano\'\s*$/', $result); }