2017-11-17 22 views
2

から結合モデル:Laravel 5 - 私は、次のURL持っているクエリ文字列

/search?customer=my-customer-slug&q=foo

Customer'sスラグから検索することで、$request->customerCustomerモデルをバインドする方法があるかどうか、私は疑問に思います。

URLが/search/{customer-slug}のときは、これは非常に簡単ですが、私はそれがクエリ文字列でできるかどうかわかりません。

答えて

2

/search/{customer-slug}を使用する利点はありませんが、これを達成するためにミドルウェアを使用できます。

クエリー文字列内のcustomerを確認してリクエストに割り当てます。次に、このミドルウェアをURLにcustomerがあると予想される任意のルートに接続できます。

<?php 

namespace App\Http\Middleware; 

use App\Customer; 
use Closure; 

class CustomerQueryStringMiddleware 
{ 

    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure     $next 
    * 
    * @return mixed 
    */ 
    public function handle($request, Closure $next) 
    { 

     if ($request->filled('customer')) { 

      $customer = Customer::where('slug', $request->customer)->firstOrFail(); 

      $request->merge(['customer' => $customer]); 
     } 

     return $next($request); 
    } 
} 
+0

グレート@Hamoud。私は優位を探していない、私はそうする方法があるかどうか疑問に思っていただけだ。 – juniorgarcia

-1

はいあなたは、以下の方法でquery stringsでそれを行うことができます。

if ($request->has('customer')) { 
    $user->customer = $request->input('customer'); 
} 
+0

これはリクエストパラメータをCustomerにバインドしていません。 –

+0

彼はfunction/searchのURLからcustomerパラメータの値にアクセスしたいのですか?customer = my-customer-slug&q = foo –

関連する問題