@@ -425,26 +425,30 @@ private function initColumnArrays()
425425 } else {
426426 // Add Order-Field for VirtualColumn
427427 if ($ this ->accessor ->isReadable ($ column , 'orderColumn ' ) && true === $ this ->accessor ->getValue ($ column , 'orderable ' )) {
428- $ orderColumn = $ this ->accessor ->getValue ($ column , 'orderColumn ' );
429- $ orderParts = explode ('. ' , $ orderColumn );
430- if (\count ($ orderParts ) < 2 ) {
431- if (!isset ($ this ->columnNames [$ orderColumn ]) || null == $ this ->accessor ->getValue ($ this ->columns [$ this ->columnNames [$ orderColumn ]], 'customDql ' )) {
432- $ orderColumn = $ this ->entityShortName .'. ' .$ orderColumn ;
428+ $ orderColumns = (array ) $ this ->accessor ->getValue ($ column , 'orderColumn ' );
429+ foreach ($ orderColumns as $ orderColumn ) {
430+ $ orderParts = explode ('. ' , $ orderColumn );
431+ if (\count ($ orderParts ) < 2 ) {
432+ if (!isset ($ this ->columnNames [$ orderColumn ]) || null == $ this ->accessor ->getValue ($ this ->columns [$ this ->columnNames [$ orderColumn ]], 'customDql ' )) {
433+ $ orderColumn = $ this ->entityShortName .'. ' .$ orderColumn ;
434+ }
433435 }
436+ $ this ->orderColumns [$ key ][] = $ orderColumn ;
434437 }
435- $ this ->orderColumns [] = $ orderColumn ;
436438 } else {
437439 $ this ->orderColumns [] = null ;
438440 }
439441
440442 // Add Search-Field for VirtualColumn
441443 if ($ this ->accessor ->isReadable ($ column , 'searchColumn ' ) && true === $ this ->accessor ->getValue ($ column , 'searchable ' )) {
442- $ searchColumn = $ this ->accessor ->getValue ($ column , 'searchColumn ' );
443- $ searchParts = explode ('. ' , $ searchColumn );
444- if (\count ($ searchParts ) < 2 ) {
445- $ searchColumn = $ this ->entityShortName .'. ' .$ searchColumn ;
444+ $ searchColumns = (array ) $ this ->accessor ->getValue ($ column , 'searchColumn ' );
445+ foreach ($ searchColumns as $ searchColumn ) {
446+ $ searchParts = explode ('. ' , $ searchColumn );
447+ if (\count ($ searchParts ) < 2 ) {
448+ $ searchColumn = $ this ->entityShortName . '. ' . $ searchColumn ;
449+ }
450+ $ this ->searchColumns [$ key ][] = $ searchColumn ;
446451 }
447- $ this ->searchColumns [] = $ searchColumn ;
448452 } else {
449453 $ this ->searchColumns [] = null ;
450454 }
@@ -508,10 +512,12 @@ private function setWhere(QueryBuilder $qb)
508512 /** @var AbstractFilter $filter */
509513 $ filter = $ this ->accessor ->getValue ($ column , 'filter ' );
510514 $ searchType = $ globalSearchType ;
511- $ searchField = $ this ->searchColumns [$ key ];
515+ $ searchFields = ( array ) $ this ->searchColumns [$ key ];
512516 $ searchValue = $ globalSearch ;
513517 $ searchTypeOfField = $ column ->getTypeOfField ();
514- $ orExpr = $ filter ->addOrExpression ($ orExpr , $ qb , $ searchType , $ searchField , $ searchValue , $ searchTypeOfField , $ key );
518+ foreach ($ searchFields as $ searchField ) {
519+ $ orExpr = $ filter ->addOrExpression ($ orExpr , $ qb , $ searchType , $ searchField , $ searchValue , $ searchTypeOfField , $ key );
520+ }
515521 }
516522 }
517523
@@ -568,10 +574,12 @@ private function setOrderBy(QueryBuilder $qb)
568574 $ requestColumn = $ this ->requestParams ['columns ' ][$ columnIdx ];
569575
570576 if ('true ' === $ requestColumn ['orderable ' ]) {
571- $ columnName = $ this ->orderColumns [$ columnIdx ];
577+ $ columnNames = ( array ) $ this ->orderColumns [$ columnIdx ];
572578 $ orderDirection = $ this ->requestParams ['order ' ][$ i ]['dir ' ];
573579
574- $ qb ->addOrderBy ($ columnName , $ orderDirection );
580+ foreach ($ columnNames as $ columnName ) {
581+ $ qb ->addOrderBy ($ columnName , $ orderDirection );
582+ }
575583 }
576584 }
577585 }
0 commit comments