У меня очень странная проблема с получением параметров запроса, используя Request
класс «в моей машине разработчика»
Request::query('sort_by')
возвращает реальный
value
(DevEnv: MacOS PHP 7.0 Laravel Valet 2)
но
в производстве всегда возвращается
null
(ProdEnv: Ubuntu 16.04 PHP 7.0 NGINX)
У меня есть эта строка в URL в браузере уже
Я не уверен насчет вашего кода, я бы предложил, если вы можете использовать
$collection=collect(Request::all());
$data=$collection->sortByDesc('yourfieldname');
OR
$data=$collection->sortBy('yourfieldname');
Вы делаете вещи неправильно. В вашем контроллере сделайте это.
public function yourController()
{
list($sortBy, $order) = explode('-', request()->get('sort_by'));
$sortedModel = YourModel::get()->orderBy($sortBy, $order);
// $sortedModel contain the collection with desired sorting order
}
С вашей текущей реализацией это будет основной подход.
Но я хотел бы предложить использовать маршрут как
/new_arrivals?sortby=price&order=desc
так что в вашем контроллере вам не нужно implode
, Вы можете просто назначить параметры, как
$sortBy = request()->get('sortby');
$order = request()->get('order');
Тогда вы можете продолжить как то же самое. Это намного чище.
Больше информации о порядок и смещение группировки заказа
Я узнал, что NGINX
блок конфигурации / сервера был виновником, который нуждается в некоторых исправлениях,
Поэтому я изменил это на это, и я получаю параметры запроса
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}