Laravel 5 - 来自查询字符串的绑定模型

时间:2017-11-17 01:30:43

标签: php laravel binding model routes

我有以下网址:

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

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

当URL为/search/{customer-slug}时,这样做非常简单,但我不知道我是否可以使用查询字符串执行此操作。

2 个答案:

答案 0 :(得分:2)

虽然我没有看到使用/search/{customer-slug}的优势,但您可以使用中间件来实现这一目标。

制作中间件以检查查询字符串中的customer并将其分配给请求。然后,您可以将此中间件附加到您希望在网址中包含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);
    }
}

答案 1 :(得分:-1)

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

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