本文整理汇总了PHP中Illuminate\Database\Eloquent\Relations\Relation::getBaseQuery方法的典型用法代码示例。如果您正苦于以下问题:PHP Relation::getBaseQuery方法的具体用法?PHP Relation::getBaseQuery怎么用?PHP Relation::getBaseQuery使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Illuminate\Database\Eloquent\Relations\Relation
的用法示例。
在下文中一共展示了Relation::getBaseQuery方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: mergeWheresToHas
/**
* Merge the "wheres" from a relation query to a has query.
*
* @param \Illuminate\Database\Eloquent\Builder $hasQuery
* @param \Illuminate\Database\Eloquent\Relations\Relation $relation
* @return void
*/
protected function mergeWheresToHas(Builder $hasQuery, Relation $relation)
{
// Here we have the "has" query and the original relation. We need to copy over any
// where clauses the developer may have put in the relationship function over to
// the has query, and then copy the bindings from the "has" query to the main.
$relationQuery = $relation->getBaseQuery();
$hasQuery->mergeWheres($relationQuery->wheres, $relationQuery->getBindings());
$this->query->mergeBindings($hasQuery->getQuery());
}
示例2: updateCount
/**
* Update counter cache column.
*
* @author Morten Rugaard <moru@nodes.dk>
*
* @param \Illuminate\Database\Eloquent\Model $model
* @param \Illuminate\Database\Eloquent\Relations\Relation $relation
* @param array|null $counterCacheConditions
* @param string $foreignKey
* @param string $counterCacheColumnName
* @return bool
*/
protected function updateCount(IlluminateModel $model, IlluminateRelation $relation, $counterCacheConditions, $foreignKey, $counterCacheColumnName)
{
// Retrieve table name of relation
$relationTableName = $relation->getModel()->getTable();
// Generate query builder for counting entries
// on our model. Result will be used as value when
// we're updating the counter cache column on the relation
$countQuery = $model->newQuery()->select(DB::raw(sprintf('COUNT(%s.id)', $model->getTable())))->join(DB::raw(sprintf('(SELECT %s.%s FROM %s) as relation', $relationTableName, $relation->getOtherKey(), $relationTableName)), $relation->getQualifiedForeignKey(), '=', sprintf('relation.%s', $relation->getOtherKey()))->where($relation->getQualifiedForeignKey(), '=', $this->prepareValue($foreignKey));
// If our relation has additional conditions, we'll need
// to add them to our query builder that counts the entries
if (is_array($counterCacheConditions)) {
foreach ($counterCacheConditions as $conditionType => $conditionParameters) {
foreach ($conditionParameters as $parameters) {
call_user_func_array([$countQuery, $conditionType], $parameters);
}
}
}
// Retrieve countQuery SQL
// and prepare for binding replacements
$countQuerySql = str_replace(['%', '?'], ['%%', '%s'], $countQuery->toSql());
// Fire the update query
// to update counter cache column
return (bool) $relation->getBaseQuery()->update([sprintf('%s.%s', $relationTableName, $counterCacheColumnName) => DB::raw(sprintf('(%s)', vsprintf($countQuerySql, $countQuery->getBindings())))]);
}