我试图在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字段。
如何确保分页仍适用于空输入。我检查了一些类似的问题,并尝试附加查询请求。但这对我仍然不起作用。
答案 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.
在控制器上。