2017-01-19 71 views
0

我有一個很奇怪的問題越來越在視圖的查詢參數,使用Request類⁠⁠⁠in我的devmachine⁠⁠⁠支持::查詢(「sort_by」)總是在視圖返回null上Laravel 5.3

⁠⁠⁠⁠Request::query('sort_by')⁠⁠⁠⁠它返回⁠⁠⁠⁠actual value⁠⁠⁠⁠

⁠⁠(DevEnv: ⁠⁠⁠MacOS PHP 7.0⁠⁠⁠ Laravel Valet 2)⁠⁠ 但⁠⁠⁠

在production⁠⁠⁠它總是返回⁠⁠⁠⁠null⁠⁠⁠⁠

⁠⁠(ProdEnv: ⁠⁠⁠Ubuntu 16.04 PHP 7.0⁠⁠⁠ NGINX)⁠⁠

我有這個字符串的URL在瀏覽器已經

I have this query strings in the URL in browser already

+0

你能告訴我們請求的網址嗎? –

+0

你能發表一些代碼或方法嗎? – Dev

+0

在視圖中 我有這段代碼{{Request :: query('sort_by')⁠⁠⁠}}} – msonowal

回答

3

我我不知道你的代碼,我會建議如果你可以使用

$collection=collect(⁠⁠⁠⁠Request::all()); 
$data=$collection->sortByDesc('yourfieldname'); 
OR 
$data=$collection->sortBy('yourfieldname'); 
+0

我能夠在控制器中獲得它,但在視圖 – msonowal

+0

中查看請求之前添加斜槓例如。 \請求::所有()或請求() - >所有()或傳遞請求對象從控制器查看 –

0

我發現了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; 
} 
1

你是錯誤地做事。在你的控制器中這樣做。

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'); 

然後你可以繼續相同。它更乾淨。 有關更多信息ordering grouping limit and offset

+0

我沒有做錯,我已經在控制器上排序它,但在視圖中,我沒有得到輸入顯示最後一個過濾器選擇是什麼,它返回null – msonowal