我正在尝试在laravel中制作一个过滤器。以下过滤器工作
if __name__ == '__main__':
def fizzbuzz(n):
try:
if(0<= n <= 99):
for i in range(n):
if i==0:
print("0")
elif (i%3==0 and i%7==0) :
print("fizzbuzz")
elif i%3==0:
print("fizz")
elif i%7==0:
print("buzz")
else:
print(i)
except Exception:
print("/// ATTENTION:The number you entered was not in between 0 and 99///")
try:
enteredNumber = int(input("Please enter a number in between 0 and 99: "))
fizzbuzz(enteredNumber)
except Exception:
print("/// ATTENTION: Something went wrong here. Next time, try to enter a valid Integer ////")
但是当我尝试做这样的事情时
$posts= Post::where('category',$request->category)->orderBy('id','desc')->paginate(10);
它不起作用。有人可以解释为什么这样,并为我提供有效的代码。我的项目有多个过滤器。
答案 0 :(得分:0)
因为$posts = Post::all();
已经执行了查询。
Post::where('category',$request->category)->latest()->paginate(10)->get();
就是你想要的。
注意:latest
需要created_at
列
答案 1 :(得分:0)
你应该去
$posts = Post::where('category',$request->category)->latest()->paginate(10);
get请求是不必要的,因为paginate将执行查询。
答案 2 :(得分:0)
第一个通过分页进行查询,即每个构建页面获取10条记录
对于第二个,基于观察,您很可能遇到至少2个错误:
第一个是在使用get
方法的行上,因为该方法至少需要一个参数。
Type error: Too few arguments to function Illuminate\Support\Collection::get()
另一个,因为它是一个集合,因为没有类似于paginate
或latest
方法的集合因此抛出其他错误。您应该检查Collection的Available methods,以便了解收集时允许的方法。
最好的解决方案之一是在进行查询时简单地对结果进行排序:
Blog::where('category',$request->category)
->orderBy('created_at', 'desc') //you may use also 'updated_at' also depends on your need
->paginate(10);
通过这种方式,您可以获得最新的分页,并且不必担心paginating a collection