本文整理汇总了PHP中Cake\Database\Query类的典型用法代码示例。如果您正苦于以下问题:PHP Query类的具体用法?PHP Query怎么用?PHP Query使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Query类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的PHP代码示例。
示例1: findProductId
public function findProductId(Query $query, array $options)
{
$result = $query->select(['id'])->where(['article_uid' => $options['uid']])->first();
if ($result == null) {
return null;
} else {
return $result->id;
}
}
开发者ID:matdion,项目名称:Product-Tracker,代码行数:9,代码来源:ProductsTable.php
示例2: findCursor
public function findCursor(Query $query)
{
$current = $this->request->query('cursor');
$limit = $this->request->query('limit') ?: 10;
if ($current) {
$query->where(['id >' => $current]);
}
$query->limit($limit);
return $query;
}
开发者ID:cakeplugins,项目名称:api,代码行数:10,代码来源:CursorHelperBehavior.php
示例3: _appendNotMatching
/**
* Conditionally adds a condition to the passed Query that will make it find
* records where there is no match with this association.
*
* @param \Cake\Database\Query $query The query to modify
* @param array $options Options array containing the `negateMatch` key.
* @return void
*/
protected function _appendNotMatching($query, $options)
{
$target = $this->_targetTable;
if (!empty($options['negateMatch'])) {
$primaryKey = $query->aliasFields((array) $target->primaryKey(), $this->_name);
$query->andWhere(function ($exp) use($primaryKey) {
array_map([$exp, 'isNull'], $primaryKey);
return $exp;
});
}
}
开发者ID:m1nd53t,项目名称:cakephp,代码行数:19,代码来源:Association.php
示例4: compile
/**
* Returns the SQL representation of the provided query after generating
* the placeholders for the bound values using the provided generator
*
* @param \Cake\Database\Query $query The query that is being compiled
* @param \Cake\Database\ValueBinder $generator the placeholder generator to be used in expressions
* @return \Closure
*/
public function compile($query, $generator)
{
$sql = '';
$type = $query->type();
$query->traverse($this->_sqlCompiler($sql, $query, $generator), $this->{'_' . $type . 'Parts'});
return $sql;
}
开发者ID:voycey,项目名称:cakephp-salesforce,代码行数:15,代码来源:SalesforceQueryCompiler.php
示例5: _buildSelectPart
/**
* @param array $parts
* @param \Cake\Database\Query $query
* @param \Cake\Database\ValueBinder $generator
* @return string
*/
protected function _buildSelectPart($parts, $query, $generator)
{
$driver = $query->connection()->driver();
$select = 'SELECT %s%s%s';
if ($this->_orderedUnion && $query->clause('union')) {
$select = '(SELECT %s%s%s';
}
$distinct = $query->clause('distinct');
$modifiers = $query->clause('modifier') ?: null;
$normalized = [];
$parts = $this->_stringifyExpressions($parts, $generator);
foreach ($parts as $k => $p) {
if (!is_numeric($k)) {
$p = $p . ' AS "' . $k . '"';
}
$normalized[] = $p;
}
if ($distinct === true) {
$distinct = 'DISTINCT ';
}
if (is_array($distinct)) {
$distinct = $this->_stringifyExpressions($distinct, $generator);
$distinct = sprintf('DISTINCT ON (%s) ', implode(', ', $distinct));
}
if ($modifiers !== null) {
$modifiers = $this->_stringifyExpressions($modifiers, $generator);
$modifiers = implode(' ', $modifiers) . ' ';
}
return sprintf($select, $distinct, $modifiers, implode(', ', $normalized));
}
开发者ID:mbamarante,项目名称:cakephp-firebird-driver,代码行数:36,代码来源:FirebirdCompiler.php
示例6: _insertQueryTranslator
/**
* Transforms an insert query that is meant to insert multiple rows at a time,
* otherwise it leaves the query untouched.
*
* The way Firebird works with multi insert is by having multiple select statements
* joined with UNION.
*
* @param \Cake\Database\Query $query The query to translate
* @return \Cake\Database\Query
*/
protected function _insertQueryTranslator($query)
{
$v = $query->clause('values');
if (count($v->values()) === 1 || $v->query()) {
return $query;
}
$newQuery = $query->connection()->newQuery();
$cols = $v->columns();
$placeholder = 0;
$replaceQuery = false;
foreach ($v->values() as $k => $val) {
$fillLength = count($cols) - count($val);
if ($fillLength > 0) {
$val = array_merge($val, array_fill(0, $fillLength, null));
}
foreach ($val as $col => $attr) {
if (!$attr instanceof ExpressionInterface) {
$val[$col] = sprintf(':c%d', $placeholder);
$placeholder++;
}
}
$select = array_combine($cols, $val);
if ($k === 0) {
$replaceQuery = true;
$newQuery->select($select);
continue;
}
$q = $newQuery->connection()->newQuery();
$newQuery->unionAll($q->select($select));
}
if ($replaceQuery) {
$v->query($newQuery);
}
return $query;
}
开发者ID:mbamarante,项目名称:cakephp-firebird-driver,代码行数:45,代码来源:FirebirdDialectTrait.php
示例7: _buildInsertPart
/**
* Builds the SQL fragment for INSERT INTO.
*
* @param array $parts The insert parts.
* @param \Cake\Database\Query $query The query that is being compiled
* @param \Cake\Database\ValueBinder $generator the placeholder generator to be used in expressions
* @return string SQL fragment.
*/
protected function _buildInsertPart($parts, $query, $generator)
{
$driver = $query->connection()->driver();
$table = $driver->quoteIfAutoQuote($parts[0]);
$columns = $this->_stringifyExpressions($parts[1], $generator);
return sprintf('INSERT INTO %s (%s)', $table, implode(', ', $columns));
}
开发者ID:cakedc,项目名称:cakephp-oracle-driver,代码行数:15,代码来源:OracleCompiler.php
示例8: prepare
/**
* Prepares a sql statement to be executed
*
* @param string|\Cake\Database\Query $query The query to prepare.
* @return \Cake\Database\StatementInterface
*/
public function prepare($query)
{
$this->connect();
$options = [PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL];
$isObject = $query instanceof Query;
if ($isObject && $query->bufferResults() === false) {
$options = [];
}
$statement = $this->_connection->prepare($isObject ? $query->sql() : $query, $options);
return new SqlserverStatement($statement, $this);
}
开发者ID:CakeDC,项目名称:cakephp,代码行数:17,代码来源:Sqlserver.php
示例9: _selectQueryTranslator
/**
* Modify the limit/offset to TSQL
*
* @param Cake\Database\Query $query The query to translate
* @return Cake\Database\Query The modified query
*/
protected function _selectQueryTranslator($query)
{
$limit = $query->clause('limit');
$offset = $query->clause('offset');
if ($limit && $offset === null) {
$query->modifier(['_auto_top_' => sprintf('TOP %d', $limit)]);
}
if ($offset !== null && !$query->clause('order')) {
$query->order($query->newExpr()->add('SELECT NULL'));
}
if ($this->_version() < 11 && $offset !== null) {
return $this->_pagingSubquery($query, $limit, $offset);
}
return $query;
}
开发者ID:ripzappa0924,项目名称:carte0.0.1,代码行数:21,代码来源:SqlserverDialectTrait.php
示例10: prepare
/**
* Prepares a sql statement to be executed
*
* @param string|\Cake\Database\Query $query The query to turn into a prepared statement.
* @return \Cake\Database\StatementInterface
*/
public function prepare($query)
{
$this->connect();
$isObject = $query instanceof Query;
$statement = $this->_connection->prepare($isObject ? $query->sql() : $query);
return new PDOStatement($statement, $this);
}
开发者ID:malhan23,项目名称:assignment-3,代码行数:13,代码来源:PDODriverTrait.php
示例11: _insertQueryTranslator
/**
* Modifies the original insert query to append a "RETURNING *" epilogue
* so that the latest insert id can be retrieved
*
* @param \Cake\Database\Query $query The query to translate.
* @return \Cake\Database\Query
*/
protected function _insertQueryTranslator($query)
{
if (!$query->clause('epilog')) {
$query->epilog('RETURNING *');
}
return $query;
}
开发者ID:JesseDarellMoore,项目名称:CS499,代码行数:14,代码来源:PostgresDialectTrait.php
示例12: prepare
/**
* Prepares a sql statement to be executed
*
* @param string|\Cake\Database\Query $query The query to prepare.
* @return \Cake\Database\StatementInterface
*/
public function prepare($query)
{
$this->connect();
$isObject = $query instanceof Query;
$statement = $this->_connection->prepare($isObject ? $query->sql() : $query);
$result = new SqliteStatement(new PDOStatement($statement, $this), $this);
if ($isObject && $query->bufferResults() === false) {
$result->bufferResults(false);
}
return $result;
}
开发者ID:CakeDC,项目名称:cakephp,代码行数:17,代码来源:Sqlite.php
示例13: prepare
/**
* Prepares a sql statement to be executed
*
* @param string|\Cake\Database\Query $query The query to prepare.
* @return \Cake\Database\StatementInterface
*/
public function prepare($query)
{
$this->connect();
$options = [PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY];
$isObject = $query instanceof Query;
if ($isObject && $query->bufferResults() === false) {
$options = [];
}
$statement = $this->_connection->prepare($isObject ? $query->sql() : $query, $options);
$result = new CustomSqlserverStatement(new SqlserverStatement($statement, $this), $this);
if ($isObject && $query->bufferResults() === false) {
$result->bufferResults(false);
}
return $result;
}
开发者ID:dominic-horbas,项目名称:cakephp-remote-sql-server-driver,代码行数:21,代码来源:CustomSqlserver.php
示例14: _buildLimitPart
/**
* Generates the LIMIT part of a SQL query
*
* @param int $limit the limit clause
* @param \Cake\Database\Query $query The query that is being compiled
* @return string
*/
protected function _buildLimitPart($limit, $query)
{
if ($limit === null || $query->clause('offset') === null) {
return '';
}
return sprintf(' FETCH FIRST %d ROWS ONLY', $limit);
}
开发者ID:JesseDarellMoore,项目名称:CS499,代码行数:14,代码来源:SqlserverCompiler.php
示例15: _transformTupleComparison
/**
* Receives a TupleExpression and changes it so that it conforms to this
* SQL dialect.
*
* It transforms expressions looking like '(a, b) IN ((c, d), (e, f)' into an
* equivalent expression of the form '((a = c) AND (b = d)) OR ((a = e) AND (b = f))'.
*
* It can also transform transform expressions where the right hand side is a query
* selecting the same amount of columns as the elements in the left hand side of
* the expression:
*
* (a, b) IN (SELECT c, d FROM a_table) is transformed into
*
* 1 = (SELECT 1 FROM a_table WHERE (a = c) AND (b = d))
*
* @param \Cake\Database\Expression\TupleComparison $expression The expression to transform
* @param \Cake\Database\Query $query The query to update.
* @return void
*/
protected function _transformTupleComparison(TupleComparison $expression, $query)
{
$fields = $expression->getField();
if (!is_array($fields)) {
return;
}
$value = $expression->getValue();
$op = $expression->getOperator();
$true = new QueryExpression('1');
if ($value instanceof Query) {
$selected = array_values($value->clause('select'));
foreach ($fields as $i => $field) {
$value->andWhere([$field . " {$op}" => new IdentifierExpression($selected[$i])]);
}
$value->select($true, true);
$expression->setField($true);
$expression->setOperator('=');
return;
}
$surrogate = $query->connection()->newQuery()->select($true);
if (!is_array(current($value))) {
$value = [$value];
}
foreach ($value as $tuple) {
$surrogate->orWhere(function ($exp) use($fields, $tuple) {
foreach (array_values($tuple) as $i => $value) {
$exp->add([$fields[$i] => $value]);
}
return $exp;
});
}
$expression->setField($true);
$expression->setValue($surrogate);
$expression->setOperator('=');
}
开发者ID:CakeDC,项目名称:cakephp,代码行数:54,代码来源:TupleComparisonTranslatorTrait.php
示例16: quote
/**
* Iterates over each of the clauses in a query looking for identifiers and
* quotes them
*
* @param \Cake\Database\Query $query The query to have its identifiers quoted
* @return \Cake\Database\Query
*/
public function quote(Query $query)
{
$binder = $query->valueBinder();
$query->valueBinder(false);
if ($query->type() === 'insert') {
$this->_quoteInsert($query);
} else {
$this->_quoteParts($query);
}
$query->traverseExpressions([$this, 'quoteExpression']);
$query->valueBinder($binder);
return $query;
}
开发者ID:maitrepylos,项目名称:nazeweb,代码行数:20,代码来源:IdentifierQuoter.php
示例17: testUnbufferedQuery
/**
* Shows that bufferResults(false) will prevent client-side results buffering
*
* @return void
*/
public function testUnbufferedQuery()
{
$query = new Query($this->connection);
$result = $query->select(['body', 'author_id'])->from('articles')->bufferResults(false)->execute();
if (!method_exists($result, 'bufferResults')) {
$result->closeCursor();
$this->skipIf(true, 'This driver does not support unbuffered queries');
}
$this->assertCount(0, $result);
$list = $result->fetchAll('assoc');
$this->assertCount(3, $list);
$result->closeCursor();
$query = new Query($this->connection);
$result = $query->select(['body', 'author_id'])->from('articles')->execute();
$this->assertCount(3, $result);
$list = $result->fetchAll('assoc');
$this->assertCount(3, $list);
$result->closeCursor();
}
开发者ID:KarimaLadhani,项目名称:cakephp,代码行数:24,代码来源:QueryTest.php
示例18: _deleteQueryTranslator
/**
* Apply translation steps to delete queries.
*
* Chops out aliases on delete query conditions as most database dialects do not
* support aliases in delete queries. This also removes aliases
* in table names as they frequently don't work either.
*
* We are intentionally not supporting deletes with joins as they have even poorer support.
*
* @param \Cake\Database\Query $query The query to translate
* @return \Cake\Database\Query The modified query
*/
protected function _deleteQueryTranslator($query)
{
$hadAlias = false;
$tables = [];
foreach ($query->clause('from') as $alias => $table) {
if (is_string($alias)) {
$hadAlias = true;
}
$tables[] = $table;
}
if ($hadAlias) {
$query->from($tables, true);
}
if (!$hadAlias) {
return $query;
}
$conditions = $query->clause('where');
if ($conditions) {
$conditions->traverse(function ($condition) {
if (!$condition instanceof Comparison) {
return $condition;
}
$field = $condition->getField();
if ($field instanceof ExpressionInterface || strpos($field, '.') === false) {
return $condition;
}
list(, $field) = explode('.', $field);
$condition->setField($field);
return $condition;
});
}
return $query;
}
开发者ID:rlugojr,项目名称:cakephp,代码行数:45,代码来源:SqlDialectTrait.php
示例19: compileQuery
/**
* Transforms the passed query to this Driver's dialect and returns an instance
* of the transformed query and the full compiled SQL string
*
* @param \Cake\Database\Query $query The query to compile.
* @param \Cake\Database\ValueBinder $generator The value binder to use.
* @return array containing 2 entries. The first entity is the transformed query
* and the second one the compiled SQL
*/
public function compileQuery(Query $query, ValueBinder $generator)
{
$processor = $this->newCompiler();
$translator = $this->queryTranslator($query->type());
$query = $translator($query);
return [$query, $processor->compile($query, $generator)];
}
开发者ID:malhan23,项目名称:assignment-3,代码行数:16,代码来源:Driver.php
示例20: testLambdaSubquery
/**
* Testing counter cache with lambda returning subqueryn
*
* @return void
*/
public function testLambdaSubquery()
{
$this->post->belongsTo('Users');
$this->post->addBehavior('CounterCache', ['Users' => ['posts_published' => function (Event $event, Entity $entity, Table $table) {
$query = new Query($this->connection);
return $query->select(4);
}]]);
$before = $this->_getUser();
$entity = $this->_getEntity();
$this->post->save($entity);
$after = $this->_getUser();
$this->assertEquals(1, $before->get('posts_published'));
$this->assertEquals(4, $after->get('posts_published'));
}
开发者ID:ripzappa0924,项目名称:carte0.0.1,代码行数:19,代码来源:CounterCacheBehaviorTest.php
注:本文中的Cake\Database\Query类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论