Laravel分页链接在空输入期间不起作用

时间:2019-02-13 03:09:28

标签: php laravel pagination

我试图在laravel刀片视图中显示表中的所有数据。

控制器

public function search()
    {
       $search = request('show');
       $users = User::query();

       foreach ($search as $field=>$value) 
       {
             if($value!=NULL)
             {
                $users = $users->where($field, 'LIKE', '%'.$value.'%');
             }
        }
       if(request()->has('sort'))
       {
            $order = explode(',',request('sort'));
            $users = $users->orderBy($order[0],$order[1]);
       }
        $users = $users->SimplePaginate(15);

        return view('nabil.homepage',compact('users'));         
    }

刀片

@foreach($users as $user)
    <tr>
        @if(session()->has('show'))
            @foreach(session()->get('columns') as $column)
                @if(in_array($column,session()->get('show')))
                    <td>{{ $user->$column }}</td>
                @endif
            @endforeach
        @endif
    </tr>
@endforeach
</table>
{{ $users->appends(Illuminate\Support\Facades\Input::except('page'))->links() }}

如果我搜索某些东西,它会完美地工作。但是,如果我用空白值搜索。然后它不起作用。第一页没有任何问题,但随后中断了。

案例1(问题案例):

我在搜索中输入了一个空值。因此搜索网址为/search?show%5Bbango%5D=

但是,当我单击下一步时,URL变为/search?page=2(并返回错误)

如果我在网址中手动输入/search?show%5Bbango%5D=&page=2,那么它可以正常工作。

案例2:

我在搜索中输入了一些数据,例如“ 123”。然后我的网址变成/search?show%5Bbango%5D=123。 在这种情况下,一切都会正常运行。

案例3:

可能无关紧要。但是,如果我在多个字段中运行查询,那么它可以正常工作,但是当我使用分页时,总会从网址中删除所有空输入。

我可能会尝试使用两个输入字段进行搜索(例如:名称和bango)。如果我将名称字段保留为空并在“ bango”中输入“ 123”,则该网址将变为/search?show%5Bbango%5D=123&show%5Bname%5D=

但是,如果我尝试转到下一页。然后网址变成/search?show%5Bbango%5D=123&page=2

尽管显示的结果很好,但是url突然删除了name字段。

如何确保分页仍适用于空输入。我检查了一些类似的问题,并尝试附加查询请求。但这对我仍然不起作用。

1 个答案:

答案 0 :(得分:2)

由于您使用的是foreach,因此需要一个数组。尝试设置

UserAccountListViewModel model = new UserAccountListViewModel();

model.UserAccounts = db.UserAccounts.Where(ua => users.Contains(ua.Id)).ToList(); // Here `ua.Id` is the column of `UserAccount` table that you are comparing against the Id of Users table.

在控制器上。