Skip to content

Commit b9ee3e1

Browse files
committed
Merge branch '8.x' of https://github.com/PovilasKorop/framework into 8.x
2 parents bbf4d6e + f1b4bc1 commit b9ee3e1

File tree

1 file changed

+34
-6
lines changed

1 file changed

+34
-6
lines changed

src/Illuminate/Database/Eloquent/Concerns/QueriesRelationships.php

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -362,9 +362,23 @@ public function orWhereDoesntHaveMorph($relation, $types, Closure $callback = nu
362362
*/
363363
public function whereRelation($relation, $column, $operator = null, $value = null)
364364
{
365-
return $this->whereHas($relation, function ($query) use ($column, $operator, $value) {
366-
$query->where($column, $operator, $value);
367-
});
365+
$relations = collect(explode('.', $relation));
366+
367+
return $this->when(
368+
$relations->count() == 1,
369+
function ($query) use ($relations, $column, $operator, $value) {
370+
$query->whereHas($relations->first(), function ($query) use ($column, $operator, $value) {
371+
$query->where($column, $operator, $value);
372+
});
373+
},
374+
function ($query) use ($relations, $column, $operator, $value) {
375+
$query->whereHas($relations->first(), function ($query) use ($relations, $column, $operator, $value) {
376+
$relations->shift();
377+
378+
$query->whereRelation($relations->implode('.'), $column, $operator, $value);
379+
});
380+
}
381+
);
368382
}
369383

370384
/**
@@ -378,9 +392,23 @@ public function whereRelation($relation, $column, $operator = null, $value = nul
378392
*/
379393
public function orWhereRelation($relation, $column, $operator = null, $value = null)
380394
{
381-
return $this->orWhereHas($relation, function ($query) use ($column, $operator, $value) {
382-
$query->where($column, $operator, $value);
383-
});
395+
$relations = collect(explode('.', $relation));
396+
397+
return $this->when(
398+
$relations->count() == 1,
399+
function ($query) use ($relations, $column, $operator, $value) {
400+
$query->orWhereHas($relations->first(), function ($query) use ($column, $operator, $value) {
401+
$query->where($column, $operator, $value);
402+
});
403+
},
404+
function ($query) use ($relations, $column, $operator, $value) {
405+
$query->orWhereHas($relations->first(), function ($query) use ($relations, $column, $operator, $value) {
406+
$relations->shift();
407+
408+
$query->orWhereRelation($relations->implode('.'), $column, $operator, $value);
409+
});
410+
}
411+
);
384412
}
385413

386414
/**

0 commit comments

Comments
 (0)