Php 条件查询&;Laravel 7中的分页
$vistors将返回Php 条件查询&;Laravel 7中的分页,php,laravel,eloquent,pagination,laravel-7,Php,Laravel,Eloquent,Pagination,Laravel 7,$vistors将返回vistors表中的所有数据 如果$visitor->ip!='127.0.0.1'当从客户端请求$inputs['hideMe']==true时 看法 路线 我有 当我这么做的时候,它似乎不起作用。 因为我在视图中使用了paginate,所以我会一直遇到这个错误 使用数组上的QueryString()调用成员函数 结果 这是完美的工作 ✅ http://app.test/visitor?interval=day ✅ http://app.test/visitor?in
vistors
表中的所有数据
如果$visitor->ip!='127.0.0.1'
当从客户端请求$inputs['hideMe']==true时
看法
路线
我有
当我这么做的时候,它似乎不起作用。
因为我在视图中使用了paginate,所以我会一直遇到这个错误
使用数组上的QueryString()调用成员函数
结果
这是完美的工作
- ✅ <代码>http://app.test/visitor?interval=day
- ❌ <代码>http://app.test/visitor?interval=week&hideMe=true
关于如何向我的查询添加逻辑有什么建议吗?我理解您试图使用
$inputs
变量做什么。以更传统的基于Laravel route/controller集合的路径加载信息可能更容易
尝试使用以下参数添加路由:
Route::get('/visitor/{interval}/{hideMe}','VisitorController@index');
然后在索引上:
public function index($interval, $hideMe){}
或者,如果您不想这样做,您可以使用request()
帮助程序直接在index
方法中使用集合,而不是传递给新的数组变量,而不是该方法中的另一个函数:
$hideMe = request()->input('hideMe');
这是因为如果触发了
hideMe()
,则$visitor
是一个数组
,否则,它是一个数组。是AbstractPaginator
的一种方法。因此,如果$visitor
只是一个原生PHP数组,那么当然不能使用$visitors->withQueryString()
这里的解决方案是在查询构建阶段使用IP'127.0.0.1'
和'24.62.137.111'
过滤掉行。像这样:
开关($interval){
案件日期:
$q=Visitor::where('created_at','>',now()->today());
打破
“一周”案例:
$q=Visitor::where('created_at','>',now()->subWeek());
打破
个案‘月份’:
$q=Visitor::where('created_at','>',now()->subMonth());
打破
案件‘年份’:
$q=Visitor::where('created_at','>',now()->subYear());
打破
违约:
$q=Visitor::orderBy('updated_at','desc');
打破
}
if($inputs['hideMe'])){
$q=$q->whereNotIn('ip',['127.0.0.1','24.62.137.111']);
}
$data=$q->分页(15);
我还没有测试我的代码,但你知道了
另外,根据经验,在Laravel中始终使用Collection
S,而不是PHP数组,除非是方法参数,如果您想轻松地对它们进行单元测试。获得方法的路径是什么?我添加了路径route::get('/visitor','VisitorController@index');代码>你能说明索引方法是如何初始化的吗?IE如何将$inputs
变量放入hideme()
方法?这是否在加载该视图的index()
?我将只共享我的VisitorController
的整个index()
。您是否获得$hideMe参数?您确定这是答案吗?是的,它肯定是答案的一部分。这是一种比在函数中包含函数更干净的方法。直接使用助手也有助于提高效率。然后,按照Daniel的建议使用where()查询,它就可以工作了。在开始查询之前,您还有几个问题需要改进,这正是我在上面推荐的。@cyber8200嗯。。。根据我目前掌握的信息,我不确定。但是,如果您认为与查询相关的另一个问题(而不是如何对查询结果进行分页)可能会问另一个问题,并包括查询和一些示例数据,其中包含不应该出现在结果中的行。
Route::get('/visitor/{interval}/{hideMe}','VisitorController@index');
public function index($interval, $hideMe){}
$hideMe = request()->input('hideMe');