@@ -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