使用范围过滤数据

时间:2017-07-16 23:58:10

标签: laravel filter scope

我正在尝试进行搜索,我已经确认已收到数据但未显示过滤器。

发送数据

<div class="panel-body">

    {!! Form::open (['route' => 'report.index', 'method'=>'GET', 'class' => 'navbar-form navbar-left pull-right']) !!}
        <div class="form-group">
            <input type="text" name= "name" class="form-control" placeholder="Buscar por Servicio">
        </div>
        <button  type="submit" class="btn btn-default">Buscar</button>

在控制器上:

class ControllerReport extends Controller
{
    public function index(Request $request)
    {    
        $servicio = mivista::name($request->get('name'));

        return view('report.buscar_pagos', compact('servicio'));
    }
}

,在模型中:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Scope;

use Illuminate\Database\Eloquent\Builder;

class mivista extends Model
{
    protected $table = 'mivista';

    public function scopeName($query,$name)
    {
        if ( ! is_null($name)) {
            return $query->where('name', 'like', '%'.$name.'%');
        }
    }
}

我澄清说,在控制器中留下$service = mivista::all();会显示所有数据,但我无法使用name参数进行搜索。 等待你的帮助,谢谢你提前

1 个答案:

答案 0 :(得分:1)

您正在使用查询范围来修改查询,因此返回的值为Builder对象。您可以在其上调用get来获取数据。

试试这个

$servicio = mivista::name($request->get('name'))->get();