首页 > 新闻动态 >  

新闻动态
NEWS

zend 2.2 db 应用例子

添加时间:2013-8-8 点击量:

<?php

use
Zend\Db\Sql\Select;

// basic table
¥0 = new Select;
¥0->(foo);
// SELECT foo. FROM foo;


// table as TableIdentifier

¥1 = new Select;
¥1->(new TableIdentifier(foo, bar));
// SELECT bar.foo. FROM bar.foo;


// table with alias

¥2 = new Select;
¥2->(array(f => foo));
// SELECT f. FROM foo AS f;


// table with alias with table as TableIdentifier

¥3 = new Select;
¥3->(array(f => new TableIdentifier(foo)));
// SELECT f. FROM foo AS f;


// columns

¥4 = new Select;
¥4->(foo)->columns(array(bar, baz));
// SELECT foo.bar AS bar, foo.baz AS baz FROM foo;


// columns with AS associative array

¥5 = new Select;
¥5->(foo)->columns(array(bar => baz));
// SELECT foo.baz AS bar FROM foo;


// columns with AS associative array mixed

¥6 = new Select;
¥6->(foo)->columns(array(bar => baz, bam));
// SELECT foo.baz AS bar, foo.bam AS bam FROM foo;


// columns where value is Expression, with AS

¥7 = new Select;
¥7->(foo)->columns(array(bar => new Expression(COUNT(some_column))));
// SELECT COUNT(some_column) AS bar FROM foo;


// columns where value is Expression

¥8 = new Select;
¥8->(foo)->columns(arraynew Expression(COUNT(some_column) AS bar)));
// SELECT COUNT(some_column) AS bar FROM foo;


// columns where value is Expression with parameters

¥9 = new Select;
¥9->(foo)->columns(
array
new Expression(
(COUNT(?) + ?) AS ?,
array(some_column, 5, bar),
array(Expression::TYPE_IDENTIFIER, Expression::TYPE_VALUE, Expression::TYPE_IDENTIFIER)


);
// SELECT (COUNT(some_column) + ?) AS bar FROM foo;
// array(column1 => 5);
//
// SELECT (COUNT(some_column) + \5\) AS bar FROM foo;

// joins (plain)

¥10 = new Select;
¥10->(foo)->join(zac, m = n);
// SELECT foo., zac. FROM foo INNER JOIN zac ON m = n;


// join with columns

¥11 = new Select;
¥11->(foo)->join(zac, m = n, array(bar, baz));
// SELECT foo., zac.bar AS bar, zac.baz AS baz FROM foo INNER JOIN zac ON m = n;


// join with alternate type

¥12 = new Select;
¥12->(foo)->join(zac, m = n, array(bar, baz), Select::JOIN_OUTER);
// SELECT foo., zac.bar AS bar, zac.baz AS baz FROM foo OUTER JOIN zac ON m = n;


// join with column aliases

¥13 = new Select;
¥13->(foo)->join(zac, m = n, array(BAR => bar, BAZ => baz));
// SELECT foo., zac.bar AS BAR, zac.baz AS BAZ FROM foo INNER JOIN zac ON m = n;


// join with table aliases

¥14 = new Select;
¥14->(foo)->joinarray(b => bar), b.foo_id = foo.foo_id);
// SELECT foo., b. FROM foo INNER JOIN bar AS b ON b.foo_id = foo.foo_id;


// where (simple string)

¥15 = new Select;
¥15->(foo)->where(x = 5);
// SELECT foo. FROM foo WHERE x = 5;


// where (returning parameters)

¥16 = new Select;
¥16->(foo)->where(array(x = ? => 5));
// SELECT foo. FROM foo WHERE x = ?;
// array(where1 => 5);
//
// SELECT foo. FROM foo WHERE x = \5\;


// group

¥17 = new Select;
¥17->(foo)->group(array(col1, col2));
// SELECT foo. FROM foo GROUP BY col1, col2;


¥18 = new Select;
¥18->(foo)->group(col1)->group(col2);
// SELECT foo. FROM foo GROUP BY col1, col2;


¥19 = new Select;
¥19->(foo)->group(new Expression(DAY(?), array(col1), array(Expression::TYPE_IDENTIFIER)));
// SELECT foo. FROM foo GROUP BY DAY(col1);


// having (simple string)

¥20 = new Select;
¥20->(foo)->having(x = 5);
// SELECT foo. FROM foo HAVING x = 5;


// having (returning parameters)

¥21 = new Select;
¥21->(foo)->having(array(x = ? => 5));
// SELECT foo. FROM foo HAVING x = ?;
// array(having1 => 5);
//
// SELECT foo. FROM foo HAVING x = \5\;


// order

¥22 = new Select;
¥22->(foo)->order(c1);
// SELECT foo. FROM foo ORDER BY c1 ASC;


// multiple order parts

¥23 = new Select;
¥23->(foo)->order(array(c1, c2));
// SELECT foo. FROM foo ORDER BY c1 ASC, c2 ASC;


// mulitple order parts

¥24 = new Select;
¥24->(foo)->order(array(c1 => DESC, c2 => Asc)); // notice partially lower case ASC
// SELECT foo. FROM foo ORDER BY c1 DESC, c2 ASC;



¥25 = new Select;
¥25->(foo)->order(array(c1 => asc))->order(c2 desc); // notice partially lower case ASC
// SELECT foo. FROM foo ORDER BY c1 ASC, c2 DESC;


// limit

¥26 = new Select;
¥26->(foo)->limit(5);
// SELECT foo. FROM foo LIMIT ?;
// array(limit => 5);
//
// SELECT foo. FROM foo LIMIT \5\;


// limit with offset

¥27 = new Select;
¥27->(foo)->limit(5)->offset(10);
// SELECT foo. FROM foo LIMIT ? OFFSET ?;
// array(limit => 5, offset => 10);
//
// SELECT foo. FROM foo LIMIT \5\ OFFSET \10\;


// joins with a few keywords in the on clause

¥28 = new Select;
¥28->(foo)->join(zac, (m = n AND c.x) BETWEEN x AND y.z);
// SELECT foo., zac. FROM foo INNER JOIN zac ON (m = n AND c.x) BETWEEN x AND y.z;


// order with compound name

¥29 = new Select;
¥29->(foo)->order(c1.d2);
// SELECT foo. FROM foo ORDER BY c1.d2 ASC;


// group with compound name

¥30 = new Select;
¥30->(foo)->group(c1.d2);
// SELECT foo. FROM foo GROUP BY c1.d2;


// join with expression in ON part

¥31 = new Select;
¥31->(foo)->join(zac, new Expression((m = n AND c.x) BETWEEN x AND y.z));
// SELECT foo., zac. FROM foo INNER JOIN zac ON (m = n AND c.x) BETWEEN x AND y.z;


// subs

¥32sub = new Select;
¥32sub->(bar)->where->like(y, %Foo%);
¥32 = new Select;
¥32->(array(x => ¥32sub));
// SELECT x. FROM (SELECT bar. FROM bar WHERE y LIKE ?) AS x;
// SELECT x. FROM (SELECT bar. FROM bar WHERE y LIKE \%Foo%\) AS x;


// use array in where, predicate in where

¥33 = new Select;
¥33->(table)->columns(array())->where(array
c1 => null
c2 => array(1, 2, 3),
new \Zend\Db\Sql\Predicate\IsNotNull(c3
));
// SELECT table. FROM table WHERE c1 IS NULL AND c2 IN (?, ?, ?) AND c3 IS NOT NULL;
// SELECT table. FROM table WHERE c1 IS NULL AND c2 IN (\1\, \2\, \3\) AND c3 IS NOT NULL;


// Expression objects in order

¥34 = new Select;
¥34->(table)->order(array
new Expression(isnull(?) DESC, array(name), array(Expression::TYPE_IDENTIFIER)),
name
));
// SELECT table. FROM table ORDER BY isnull(name) DESC, name ASC;


// join with Expression object in COLUMNS part (ZF2-514)

¥35 = new Select;
¥35->(foo)->columns(array())->join(bar, m = n, array(thecount => new Expression(COUNT())));
// SELECT COUNT() AS thecount FROM foo INNER JOIN bar ON m = n;


// multiple joins with expressions

¥36 = new Select;
¥36->(foo
->join(tableA, new Predicate\Operator(id, =, 1))
->join(tableB, new Predicate\Operator(id, =, 2))
->join(tableC, new Predicate\PredicateSet(array
new Predicate\Operator(id, =, 3),
new Predicate\Operator(number, >, 20
)));
// SELECT foo., tableA., tableB., tableC. FROM foo
// INNER JOIN tableA ON id = :join1part1 INNER JOIN tableB ON id = :join2part1
// INNER JOIN tableC ON id = :join3part1 AND number > :join3part2;
//
// SELECT foo., tableA., tableB., tableC. FROM foo
// INNER JOIN tableA ON id = \1\ INNER JOIN tableB ON id = \2\
// INNER JOIN tableC ON id = \3\ AND number > \20\;


我们永远不要期待别人的拯救,只有自己才能升华自己。自己已准备好了多少容量,方能吸引对等的人与我们相遇,否则再美好的人出现、再动人的事情降临身边,我们也没有能量去理解与珍惜,终将擦肩而过。—— 姚谦《品味》
分享到: