Skip to content

Commit 6111ef7

Browse files
authored
Merge pull request #2 from Astrotomic/ft-unify-where-translation-scopes
unify where translation scopes
2 parents 274327d + baaf49a commit 6111ef7

File tree

2 files changed

+9
-22
lines changed

2 files changed

+9
-22
lines changed

.codeclimate.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ version: "2"
22
checks:
33
argument-count:
44
enabled: true
5+
config:
6+
threshold: 6
57
complex-logic:
68
enabled: true
79
file-lines:

src/Translatable/Translatable.php

Lines changed: 7 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -405,44 +405,29 @@ public function scopeWithTranslation(Builder $query)
405405
]);
406406
}
407407

408-
public function scopeWhereTranslation(Builder $query, string $translationField, $value, ?string $locale = null)
408+
public function scopeWhereTranslation(Builder $query, string $translationField, $value, ?string $locale = null, string $method = 'whereHas', string $operator = '=')
409409
{
410-
return $query->whereHas('translations', function (Builder $query) use ($translationField, $value, $locale) {
411-
$query->where($this->getTranslationsTable().'.'.$translationField, $value);
410+
return $query->$method('translations', function (Builder $query) use ($translationField, $value, $locale, $operator) {
411+
$query->where($this->getTranslationsTable().'.'.$translationField, $operator, $value);
412412
if ($locale) {
413-
$query->where($this->getTranslationsTable().'.'.$this->getLocaleKey(), $locale);
413+
$query->where($this->getTranslationsTable().'.'.$this->getLocaleKey(), $operator, $locale);
414414
}
415415
});
416416
}
417417

418418
public function scopeOrWhereTranslation(Builder $query, string $translationField, $value, ?string $locale = null)
419419
{
420-
return $query->orWhereHas('translations', function (Builder $query) use ($translationField, $value, $locale) {
421-
$query->where($this->getTranslationsTable().'.'.$translationField, $value);
422-
if ($locale) {
423-
$query->where($this->getTranslationsTable().'.'.$this->getLocaleKey(), $locale);
424-
}
425-
});
420+
return $this->scopeWhereTranslation($query, $translationField, $value, $locale, 'orWhereHas');
426421
}
427422

428423
public function scopeWhereTranslationLike(Builder $query, string $translationField, $value, ?string $locale = null)
429424
{
430-
return $query->whereHas('translations', function (Builder $query) use ($translationField, $value, $locale) {
431-
$query->where($this->getTranslationsTable().'.'.$translationField, 'LIKE', $value);
432-
if ($locale) {
433-
$query->where($this->getTranslationsTable().'.'.$this->getLocaleKey(), 'LIKE', $locale);
434-
}
435-
});
425+
return $this->scopeWhereTranslation($query, $translationField, $value, $locale, 'whereHas', 'LIKE');
436426
}
437427

438428
public function scopeOrWhereTranslationLike(Builder $query, string $translationField, $value, ?string $locale = null)
439429
{
440-
return $query->orWhereHas('translations', function (Builder $query) use ($translationField, $value, $locale) {
441-
$query->where($this->getTranslationsTable().'.'.$translationField, 'LIKE', $value);
442-
if ($locale) {
443-
$query->where($this->getTranslationsTable().'.'.$this->getLocaleKey(), 'LIKE', $locale);
444-
}
445-
});
430+
return $this->scopeWhereTranslation($query, $translationField, $value, $locale, 'orWhereHas', 'LIKE');
446431
}
447432

448433
public function scopeOrderByTranslation(Builder $query, string $translationField, string $sortMethod = 'asc')

0 commit comments

Comments
 (0)