Example #1
0
 /**
  * Test the leftJoin() and innerJoin method of the DataQuery object
  */
 public function testJoins()
 {
     $dq = new DataQuery('Member');
     $dq->innerJoin("Group_Members", "\"Group_Members\".\"MemberID\" = \"Member\".\"ID\"");
     $this->assertContains("INNER JOIN \"Group_Members\" ON \"Group_Members\".\"MemberID\" = \"Member\".\"ID\"", $dq->sql());
     $dq = new DataQuery('Member');
     $dq->leftJoin("Group_Members", "\"Group_Members\".\"MemberID\" = \"Member\".\"ID\"");
     $this->assertContains("LEFT JOIN \"Group_Members\" ON \"Group_Members\".\"MemberID\" = \"Member\".\"ID\"", $dq->sql());
 }
 /**
  *
  *@return SQLQuery
  **/
 public function apply(DataQuery $query)
 {
     $this->model = $query->applyRelation($this->relation);
     $value = $this->getValue();
     if ($value && in_array($value, array(0, 1))) {
         $query->innerJoin($table = "Payment", $onPredicate = "\"Payment\".\"OrderID\" = \"Order\".\"ID\"", $tableAlias = null);
     }
     return $query;
 }
 public function testRelationOrderWithCustomJoin()
 {
     $dataQuery = new DataQuery('DataQueryTest_B');
     $dataQuery->innerJoin('DataQueryTest_D', '"DataQueryTest_D"."RelationID" = "DataQueryTest_B"."ID"');
     $dataQuery->execute();
 }
Example #4
0
 /**
  * Add an inner join clause to this data list's query.
  *
  * @param string $table Table name (unquoted)
  * @param string $onClause Escaped SQL statement, e.g. '"Table1"."ID" = "Table2"."ID"'
  * @param string $alias - if you want this table to be aliased under another name
  * @return DataList 
  */
 public function innerJoin($table, $onClause, $alias = null)
 {
     $this->dataQuery->innerJoin($table, $onClause, $alias);
     return $this;
 }
 /**
  * Apply filter query SQL to a search query
  * 
  * @see SearchFilter::apply()
  * @return SQLQuery
  */
 public function apply(DataQuery $query)
 {
     $this->model = $query->applyRelation($this->relation);
     $value = $this->getValue();
     if ($value) {
         $query->innerJoin('ProductCategory_Products', "\"ProductCategory_Products\".\"ProductID\" = \"SiteTree\".\"ID\"");
         $query->innerJoin('SiteTree_Live', "\"SiteTree_Live\".\"ID\" = \"ProductCategory_Products\".\"ProductCategoryID\"");
         $query->where("\"SiteTree_Live\".\"ID\" LIKE '%" . Convert::raw2sql($value) . "%'");
     }
     return $query;
 }