Skip to content

Commit

Permalink
Merge branch 'master' into pr_1746
Browse files Browse the repository at this point in the history
  • Loading branch information
divine committed Jan 30, 2020
2 parents b18e97b + 9ebcc5a commit 326e3a8
Showing 1 changed file with 17 additions and 14 deletions.
31 changes: 17 additions & 14 deletions src/Jenssegers/Mongodb/Helpers/QueriesRelationships.php
Expand Up @@ -8,13 +8,14 @@
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\HasOneOrMany;
use Illuminate\Database\Eloquent\Relations\Relation;
use Jenssegers\Mongodb\Eloquent\Model;

trait QueriesRelationships
{
/**
* Add a relationship count / exists condition to the query.
* @param string $relation
* @param Relation|string $relation
* @param string $operator
* @param int $count
* @param string $boolean
Expand All @@ -23,11 +24,13 @@ trait QueriesRelationships
*/
public function has($relation, $operator = '>=', $count = 1, $boolean = 'and', Closure $callback = null)
{
if (strpos($relation, '.') !== false) {
return $this->hasNested($relation, $operator, $count, $boolean, $callback);
}
if (is_string($relation)) {
if (strpos($relation, '.') !== false) {
return $this->hasNested($relation, $operator, $count, $boolean, $callback);
}

$relation = $this->getRelationWithoutConstraints($relation);
$relation = $this->getRelationWithoutConstraints($relation);
}

// If this is a hybrid relation then we can not use a normal whereExists() query that relies on a subquery
// We need to use a `whereIn` query
Expand Down Expand Up @@ -59,25 +62,25 @@ public function has($relation, $operator = '>=', $count = 1, $boolean = 'and', C
}

/**
* @param $relation
* @param Relation $relation
* @return bool
*/
protected function isAcrossConnections($relation)
protected function isAcrossConnections(Relation $relation)
{
return $relation->getParent()->getConnectionName() !== $relation->getRelated()->getConnectionName();
}

/**
* Compare across databases
* @param $relation
* @param Relation $relation
* @param string $operator
* @param int $count
* @param string $boolean
* @param Closure|null $callback
* @return mixed
* @throws Exception
*/
public function addHybridHas($relation, $operator = '>=', $count = 1, $boolean = 'and', Closure $callback = null)
public function addHybridHas(Relation $relation, $operator = '>=', $count = 1, $boolean = 'and', Closure $callback = null)
{
$hasQuery = $relation->getQuery();
if ($callback) {
Expand All @@ -99,10 +102,10 @@ public function addHybridHas($relation, $operator = '>=', $count = 1, $boolean =
}

/**
* @param $relation
* @param Relation $relation
* @return string
*/
protected function getHasCompareKey($relation)
protected function getHasCompareKey(Relation $relation)
{
if (method_exists($relation, 'getHasCompareKey')) {
return $relation->getHasCompareKey();
Expand Down Expand Up @@ -147,14 +150,14 @@ protected function getConstrainedRelatedIds($relations, $operator, $count)

/**
* Returns key we are constraining this parent model's query with
* @param $relation
* @param Relation $relation
* @return string
* @throws Exception
*/
protected function getRelatedConstraintKey($relation)
protected function getRelatedConstraintKey(Relation $relation)
{
if ($relation instanceof HasOneOrMany) {
return $this->model->getKeyName();
return $relation->getLocalKeyName();
}

if ($relation instanceof BelongsTo) {
Expand Down

0 comments on commit 326e3a8

Please sign in to comment.