99use Illuminate \Database \Eloquent \Relations \HasOneOrMany ;
1010use Illuminate \Database \Eloquent \Relations \HasOneThrough ;
1111use Illuminate \Database \Eloquent \Relations \MorphTo ;
12+ use Illuminate \Database \Eloquent \Relations \Relation ;
1213use Yajra \DataTables \Exceptions \Exception ;
1314
1415/**
@@ -25,16 +26,12 @@ class EloquentDataTable extends QueryDataTable
2526 */
2627 public function __construct ($ model )
2728 {
28- switch ($ model ) {
29- case $ model instanceof Model:
30- $ builder = $ model ->newQuery ();
31- break ;
32- case $ model instanceof EloquentBuilder:
33- $ builder = $ model ;
34- break ;
35- default :
36- throw new Exception ('Invalid model type. Must be an instance of Eloquent Model or Eloquent Builder. ' );
37- }
29+ $ builder = match (true ) {
30+ $ model instanceof Model => $ model ->newQuery (),
31+ $ model instanceof Relation => $ model ->getQuery (),
32+ $ model instanceof EloquentBuilder => $ model ,
33+ default => throw new Exception ('Invalid model type. Must be an instance of Eloquent Model, Eloquent Relation, or Eloquent Builder. ' ),
34+ };
3835
3936 parent ::__construct ($ builder ->getQuery ());
4037
@@ -100,10 +97,13 @@ protected function compileQuerySearch($query, string $column, string $keyword, s
10097 }
10198
10299 if ($ this ->isMorphRelation ($ relation )) {
103- $ query ->{$ boolean .'WhereHasMorph ' }($ relation , '* ' ,
100+ $ query ->{$ boolean .'WhereHasMorph ' }(
101+ $ relation ,
102+ '* ' ,
104103 function (EloquentBuilder $ query ) use ($ newColumn , $ keyword ) {
105104 parent ::compileQuerySearch ($ query , $ newColumn , $ keyword , '' );
106- });
105+ }
106+ );
107107 } else {
108108 $ query ->{$ boolean .'WhereHas ' }($ relation , function (EloquentBuilder $ query ) use ($ newColumn , $ keyword ) {
109109 parent ::compileQuerySearch ($ query , $ newColumn , $ keyword , '' );
0 commit comments