Guest User

Untitled

a guest
May 31st, 2016
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.15 KB | None | 0 0
  1. <?php
  2.  
  3. use Zend\Db\Sql\Select;
  4.  
  5. // basic table
  6. $select0 = new Select;
  7. $select0->from('foo');
  8. // 'SELECT "foo".* FROM "foo"';
  9.  
  10.  
  11. // table as TableIdentifier
  12. $select1 = new Select;
  13. $select1->from(new TableIdentifier('foo', 'bar'));
  14. // 'SELECT "bar"."foo".* FROM "bar"."foo"';
  15.  
  16.  
  17. // table with alias
  18. $select2 = new Select;
  19. $select2->from(array('f' => 'foo'));
  20. // 'SELECT "f".* FROM "foo" AS "f"';
  21.  
  22.  
  23. // table with alias with table as TableIdentifier
  24. $select3 = new Select;
  25. $select3->from(array('f' => new TableIdentifier('foo')));
  26. // 'SELECT "f".* FROM "foo" AS "f"';
  27.  
  28.  
  29. // columns
  30. $select4 = new Select;
  31. $select4->from('foo')->columns(array('bar', 'baz'));
  32. // 'SELECT "foo"."bar" AS "bar", "foo"."baz" AS "baz" FROM "foo"';
  33.  
  34.  
  35. // columns with AS associative array
  36. $select5 = new Select;
  37. $select5->from('foo')->columns(array('bar' => 'baz'));
  38. // 'SELECT "foo"."baz" AS "bar" FROM "foo"';
  39.  
  40.  
  41. // columns with AS associative array mixed
  42. $select6 = new Select;
  43. $select6->from('foo')->columns(array('bar' => 'baz', 'bam'));
  44. // 'SELECT "foo"."baz" AS "bar", "foo"."bam" AS "bam" FROM "foo"';
  45.  
  46.  
  47. // columns where value is Expression, with AS
  48. $select7 = new Select;
  49. $select7->from('foo')->columns(array('bar' => new Expression('COUNT(some_column)')));
  50. // 'SELECT COUNT(some_column) AS "bar" FROM "foo"';
  51.  
  52.  
  53. // columns where value is Expression
  54. $select8 = new Select;
  55. $select8->from('foo')->columns(array(new Expression('COUNT(some_column) AS bar')));
  56. // 'SELECT COUNT(some_column) AS bar FROM "foo"';
  57.  
  58.  
  59. // columns where value is Expression with parameters
  60. $select9 = new Select;
  61. $select9->from('foo')->columns(
  62. array(
  63. new Expression(
  64. '(COUNT(?) + ?) AS ?',
  65. array('some_column', 5, 'bar'),
  66. array(Expression::TYPE_IDENTIFIER, Expression::TYPE_VALUE, Expression::TYPE_IDENTIFIER)
  67. )
  68. )
  69. );
  70. // 'SELECT (COUNT("some_column") + ?) AS "bar" FROM "foo"';
  71. // array('column1' => 5);
  72. //
  73. // 'SELECT (COUNT("some_column") + \'5\') AS "bar" FROM "foo"';
  74.  
  75. // joins (plain)
  76. $select10 = new Select;
  77. $select10->from('foo')->join('zac', 'm = n');
  78. // 'SELECT "foo".*, "zac".* FROM "foo" INNER JOIN "zac" ON "m" = "n"';
  79.  
  80.  
  81. // join with columns
  82. $select11 = new Select;
  83. $select11->from('foo')->join('zac', 'm = n', array('bar', 'baz'));
  84. // 'SELECT "foo".*, "zac"."bar" AS "bar", "zac"."baz" AS "baz" FROM "foo" INNER JOIN "zac" ON "m" = "n"';
  85.  
  86.  
  87. // join with alternate type
  88. $select12 = new Select;
  89. $select12->from('foo')->join('zac', 'm = n', array('bar', 'baz'), Select::JOIN_OUTER);
  90. // 'SELECT "foo".*, "zac"."bar" AS "bar", "zac"."baz" AS "baz" FROM "foo" OUTER JOIN "zac" ON "m" = "n"';
  91.  
  92.  
  93. // join with column aliases
  94. $select13 = new Select;
  95. $select13->from('foo')->join('zac', 'm = n', array('BAR' => 'bar', 'BAZ' => 'baz'));
  96. // 'SELECT "foo".*, "zac"."bar" AS "BAR", "zac"."baz" AS "BAZ" FROM "foo" INNER JOIN "zac" ON "m" = "n"';
  97.  
  98.  
  99. // join with table aliases
  100. $select14 = new Select;
  101. $select14->from('foo')->join(array('b' => 'bar'), 'b.foo_id = foo.foo_id');
  102. // 'SELECT "foo".*, "b".* FROM "foo" INNER JOIN "bar" AS "b" ON "b"."foo_id" = "foo"."foo_id"';
  103.  
  104.  
  105. // where (simple string)
  106. $select15 = new Select;
  107. $select15->from('foo')->where('x = 5');
  108. // 'SELECT "foo".* FROM "foo" WHERE x = 5';
  109.  
  110.  
  111. // where (returning parameters)
  112. $select16 = new Select;
  113. $select16->from('foo')->where(array('x = ?' => 5));
  114. // 'SELECT "foo".* FROM "foo" WHERE x = ?';
  115. // array('where1' => 5);
  116. //
  117. // 'SELECT "foo".* FROM "foo" WHERE x = \'5\'';
  118.  
  119.  
  120. // group
  121. $select17 = new Select;
  122. $select17->from('foo')->group(array('col1', 'col2'));
  123. // 'SELECT "foo".* FROM "foo" GROUP BY "col1", "col2"';
  124.  
  125.  
  126. $select18 = new Select;
  127. $select18->from('foo')->group('col1')->group('col2');
  128. // 'SELECT "foo".* FROM "foo" GROUP BY "col1", "col2"';
  129.  
  130.  
  131. $select19 = new Select;
  132. $select19->from('foo')->group(new Expression('DAY(?)', array('col1'), array(Expression::TYPE_IDENTIFIER)));
  133. // 'SELECT "foo".* FROM "foo" GROUP BY DAY("col1")';
  134.  
  135.  
  136. // having (simple string)
  137. $select20 = new Select;
  138. $select20->from('foo')->having('x = 5');
  139. // 'SELECT "foo".* FROM "foo" HAVING x = 5';
  140.  
  141.  
  142. // having (returning parameters)
  143. $select21 = new Select;
  144. $select21->from('foo')->having(array('x = ?' => 5));
  145. // 'SELECT "foo".* FROM "foo" HAVING x = ?';
  146. // array('having1' => 5);
  147. //
  148. // 'SELECT "foo".* FROM "foo" HAVING x = \'5\'';
  149.  
  150.  
  151. // order
  152. $select22 = new Select;
  153. $select22->from('foo')->order('c1');
  154. // 'SELECT "foo".* FROM "foo" ORDER BY "c1" ASC';
  155.  
  156.  
  157. // multiple order parts
  158. $select23 = new Select;
  159. $select23->from('foo')->order(array('c1', 'c2'));
  160. // 'SELECT "foo".* FROM "foo" ORDER BY "c1" ASC, "c2" ASC';
  161.  
  162.  
  163. // mulitple order parts
  164. $select24 = new Select;
  165. $select24->from('foo')->order(array('c1' => 'DESC', 'c2' => 'Asc')); // notice partially lower case ASC
  166. // 'SELECT "foo".* FROM "foo" ORDER BY "c1" DESC, "c2" ASC';
  167.  
  168.  
  169. $select25 = new Select;
  170. $select25->from('foo')->order(array('c1' => 'asc'))->order('c2 desc'); // notice partially lower case ASC
  171. // 'SELECT "foo".* FROM "foo" ORDER BY "c1" ASC, "c2" DESC';
  172.  
  173.  
  174. // limit
  175. $select26 = new Select;
  176. $select26->from('foo')->limit(5);
  177. // 'SELECT "foo".* FROM "foo" LIMIT ?';
  178. // array('limit' => 5);
  179. //
  180. // 'SELECT "foo".* FROM "foo" LIMIT \'5\'';
  181.  
  182.  
  183. // limit with offset
  184. $select27 = new Select;
  185. $select27->from('foo')->limit(5)->offset(10);
  186. // 'SELECT "foo".* FROM "foo" LIMIT ? OFFSET ?';
  187. // array('limit' => 5, 'offset' => 10);
  188. //
  189. // 'SELECT "foo".* FROM "foo" LIMIT \'5\' OFFSET \'10\'';
  190.  
  191.  
  192. // joins with a few keywords in the on clause
  193. $select28 = new Select;
  194. $select28->from('foo')->join('zac', '(m = n AND c.x) BETWEEN x AND y.z');
  195. // 'SELECT "foo".*, "zac".* FROM "foo" INNER JOIN "zac" ON ("m" = "n" AND "c"."x") BETWEEN "x" AND "y"."z"';
  196.  
  197.  
  198. // order with compound name
  199. $select29 = new Select;
  200. $select29->from('foo')->order('c1.d2');
  201. // 'SELECT "foo".* FROM "foo" ORDER BY "c1"."d2" ASC';
  202.  
  203.  
  204. // group with compound name
  205. $select30 = new Select;
  206. $select30->from('foo')->group('c1.d2');
  207. // 'SELECT "foo".* FROM "foo" GROUP BY "c1"."d2"';
  208.  
  209.  
  210. // join with expression in ON part
  211. $select31 = new Select;
  212. $select31->from('foo')->join('zac', new Expression('(m = n AND c.x) BETWEEN x AND y.z'));
  213. // 'SELECT "foo".*, "zac".* FROM "foo" INNER JOIN "zac" ON (m = n AND c.x) BETWEEN x AND y.z';
  214.  
  215.  
  216. // subselects
  217. $select32subselect = new Select;
  218. $select32subselect->from('bar')->where->like('y', '%Foo%');
  219. $select32 = new Select;
  220. $select32->from(array('x' => $select32subselect));
  221. // 'SELECT "x".* FROM (SELECT "bar".* FROM "bar" WHERE "y" LIKE ?) AS "x"';
  222. // 'SELECT "x".* FROM (SELECT "bar".* FROM "bar" WHERE "y" LIKE \'%Foo%\') AS "x"';
  223.  
  224.  
  225. // use array in where, predicate in where
  226. $select33 = new Select;
  227. $select33->from('table')->columns(array('*'))->where(array(
  228. 'c1' => null,
  229. 'c2' => array(1, 2, 3),
  230. new \Zend\Db\Sql\Predicate\IsNotNull('c3')
  231. ));
  232. // 'SELECT "table".* FROM "table" WHERE "c1" IS NULL AND "c2" IN (?, ?, ?) AND "c3" IS NOT NULL';
  233. // 'SELECT "table".* FROM "table" WHERE "c1" IS NULL AND "c2" IN (\'1\', \'2\', \'3\') AND "c3" IS NOT NULL';
  234.  
  235.  
  236. // Expression objects in order
  237. $select34 = new Select;
  238. $select34->from('table')->order(array(
  239. new Expression('isnull(?) DESC', array('name'), array(Expression::TYPE_IDENTIFIER)),
  240. 'name'
  241. ));
  242. // 'SELECT "table".* FROM "table" ORDER BY isnull("name") DESC, "name" ASC';
  243.  
  244.  
  245. // join with Expression object in COLUMNS part (ZF2-514)
  246. $select35 = new Select;
  247. $select35->from('foo')->columns(array())->join('bar', 'm = n', array('thecount' => new Expression("COUNT(*)")));
  248. // 'SELECT COUNT(*) AS "thecount" FROM "foo" INNER JOIN "bar" ON "m" = "n"';
  249.  
  250.  
  251. // multiple joins with expressions
  252. $select36 = new Select;
  253. $select36->from('foo')
  254. ->join('tableA', new Predicate\Operator('id', '=', 1))
  255. ->join('tableB', new Predicate\Operator('id', '=', 2))
  256. ->join('tableC', new Predicate\PredicateSet(array(
  257. new Predicate\Operator('id', '=', 3),
  258. new Predicate\Operator('number', '>', 20)
  259. )));
  260. // 'SELECT "foo".*, "tableA".*, "tableB".*, "tableC".* FROM "foo" '
  261. // 'INNER JOIN "tableA" ON "id" = :join1part1 INNER JOIN "tableB" ON "id" = :join2part1 '
  262. // 'INNER JOIN "tableC" ON "id" = :join3part1 AND "number" > :join3part2';
  263. //
  264. // 'SELECT "foo".*, "tableA".*, "tableB".*, "tableC".* FROM "foo" '
  265. // 'INNER JOIN "tableA" ON "id" = \'1\' INNER JOIN "tableB" ON "id" = \'2\' '
  266. // 'INNER JOIN "tableC" ON "id" = \'3\' AND "number" > \'20\'';
Add Comment
Please, Sign In to add comment