【问题标题】:Laravel 5 - Binding model from query stringLaravel 5 - 从查询字符串绑定模型
【发布时间】:2018-04-30 17:09:55
【问题描述】:

我有以下网址:

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

我想知道是否有一种方法可以通过搜索 Customer's slug 将 Customer 模型绑定到 $request->customer

当 URL 是 /search/{customer-slug} 时这样做很容易,但我不知道我是否可以使用查询字符串来做到这一点。

【问题讨论】:

    标签: php laravel binding model routes


    【解决方案1】:

    虽然我没有看到使用 /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);
        }
    }
    

    【讨论】:

    • 伟大的@Hamoud。我不是在寻找优势,我只是想知道是否有办法这样做。
    【解决方案2】:

    是的,您可以通过以下方式使用query strings

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

    【讨论】:

    • 这不是将请求参数绑定到客户,你知道吗?
    • 他想从函数 /search?customer=my-customer-slug&q=foo 中的 URL 访问客户参数的值
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-23
    • 2016-06-03
    • 2018-06-13
    • 2016-12-15
    • 1970-01-01
    • 2019-06-11
    • 1970-01-01
    相关资源
    最近更新 更多