2017-11-17 10 views
2

에서 바인딩 모델 나는 다음과 같은 URL이 : 나는 Customer's 슬러그에서 검색하여, $request->customerCustomer 모델을 결합 할 수있는 방법이 있는지 궁금Laravel 5 - 쿼리 문자열

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

합니다.

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

이것은 고객에게 요청 매개 변수를 바인딩하지 않습니다. –

+0

그는 함수/검색에서 URL의 customer 매개 변수 값에 액세스하려고합니까? customer = my-customer-slug & q = foo –