Laravel необязательное поле выбора - PullRequest
0 голосов
/ 06 мая 2020

В общем контроллере c у меня есть следующий запрос в Laravel

 $query=DB::Table("Enemies")->select("Name",$orderBy,$select[0])
            ->Offset(($page-1)*Context::$PageSize)
            ->Limit(Context::$PageSize)
            ->OrderBy("$orderBy", 'DESC');

Я передаю этот курсор в представление, где визуализирую его в html.

В некоторых поисках я не хочу показывать параметр $ orderBy, например,

 $query=DB::Table("Enemies")->select("Name",$select[0])
            ->Offset(($page-1)*Context::$PageSize)
            ->Limit(Context::$PageSize)
            ->OrderBy("$orderBy", 'DESC');

Я просто хочу удалить его "встроенным" ... Я не хочу делать 2 запроса на основе такого условия

if($orderBy=="xxx")
    $query=DB::Table(....) //query without order by
else
    $query=DB::Table(....)  //query with order by

Я пробовал с двумя вариантами выбора, где второй выбор был необязательным, но второй выбор перезаписывал первый выбор.

Любой хороший способ сделать это?

1 Ответ

2 голосов
/ 06 мая 2020

Вы можете определить столбцы в get() как массив вместо select():

$columns = ['Name', $select[0]];

if ($condition) {
    $columns[] = $orderBy;
}

DB::table('Enemies')->get($columns);

Если по какой-то причине вы хотите придерживаться select(), вы все равно используете его вместо:

DB::table('Enemies')->select($columns)->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...