Laravel范围 - 将2个参数传递给范围

Jac*_*ack 8 php scope laravel

我的表中有一个状态列,有3个状态(注册,转发,完成).

我在视图中有一个不同的链接来过滤结果:

<li>{{ link_to_route('psa.index', 'Eingetragen', array('f' => 'register'), $attributes = array('title' => 'Eingetragen!' )) }}</li>
<li>{{ link_to_route('psa.index', 'Wird erledigt', array('f' => 'forwarded'), $attributes = array('title' => 'Wird erledigt!' )) }}</li>
<li>{{ link_to_route('psa.index', 'Unerledigt', array('f' => 'forwarded', 'register'), $attributes = array('title' => 'Wird erledigt!' )) }}</li>
Run Code Online (Sandbox Code Playgroud)

这是控制器代码段:

if(Input::get('f'))
        {
            $reports = PsaReports::filter(Input::get('f'))->with('automat', 'failure')->orderBy('incoming_day', 'desc')->orderBy('incoming_time', 'desc')->paginate(30);
        }
Run Code Online (Sandbox Code Playgroud)

这里的范围:

public function scopeFilter($filter, $search)
    {
        return $filter->where('status', $search);
    }
Run Code Online (Sandbox Code Playgroud)

通过上面的第三个链接,我想要调整状态寄存器的范围转发.该链接传递两个参数,如何将它们传递给范围?

或者它只能用第二个范围?

非常感谢

Mar*_*lln 15

您可以在范围中添加第三个参数,然后在设置该参数时执行一些特殊操作.

你的范围

public function scopeFilter($filter, $search, $search2 = null)
{
    if ($search2 !== null) {
        return $filter->where(function($query) use ($search, search2) {
            $query->where('status', $search)->orWhere('status', $search2);
        });
    }

    return $filter->where('status', $search);
}
Run Code Online (Sandbox Code Playgroud)

您的控制器代码段

if(Input::get('f'))
{
    $reports = PsaReports::filter(Input::get('f'), Input::get('f2'))->with('automat', 'failure')->orderBy('incoming_day', 'desc')->orderBy('incoming_time', 'desc')->paginate(30);
}
Run Code Online (Sandbox Code Playgroud)

你的链接

<li>{{ link_to_route('psa.index', 'Unerledigt', array('f' => 'forwarded', 'f2' => 'register'), $attributes = array('title' => 'Wird erledigt!' )) }}</li>
Run Code Online (Sandbox Code Playgroud)

  • 在我的 laravel 7 秒参数中转换为 Illuminate\Database\Eloquent\Relations\HasMany 我如何将参数发送到作用域 (3认同)