Как сделать так, чтобы Laravel не сортировался автоматически

мой массив из $temp является Array ( [0] => 22 [1] => 26 [2] => 20 [3] => 24 ) или же 22|26|20|24

когда я использую whereIn как это

$robjeks = DB::table('objek')->whereIn('id', $temp)->get();

результат 20|22|24|26|

это автоматически сортируется. Я хочу, чтобы это не сортировалось.

как сделать так же как 22|26|20|24?

Спасибо за внимание.

1

Решение

Это не имеет ничего общего с Laravel. Сначала прочтите здесь: избегать сортировки по ключевому слову MYSQL IN

Затем, чтобы сделать это, вы можете использовать этот код:

$temp = [22, 26, 20, 24];
$tempStr = implode(',', $temp);
$robjeks = DB::table('objek')
->whereIn('id', $temp)
->orderByRaw(DB::raw("FIELD(id, $tempStr)"))
->get();

В этом случае вы можете быть подвержены риску инъекции SQL, поэтому, пожалуйста, продезинфицируйте массив чисел соответственно.

Ref: Laravel: заказ по где в

1

Другие решения

Я думаю, что это больше связано с SQL, чем с Laravel. Если вы используете автоинкремент id, то, очевидно, 22 находится до 26. Если вы хотите изменить это, вы можете перейти по этой ссылке:
Laravel: заказ по где в

Или вручную закажите свой запрос самостоятельно. например.: ->orderBy('name') или что-то другое.

1

По вопросам рекламы [email protected]