2016-08-12 63 views
5

在雄辩中,我如何跳过10行然后得到表格的其余部分?跳过并采取所有?

User::skip(10)->all(); 

上述不起作用,但它给你一个想法,我在找什么。

回答

3

试试这个:

$count = User::count(); 
$skip = 10; 

User::skip($skip)->take($count - $skip)->get(); 

使用一个查询:

User::skip($skip)->take(18446744073709551615)->get(); 

这是丑陋的,但它是一个例子from official MySQL manual

To retrieve all rows from a certain offset up to the end of the result set, you can use some large number for the second parameter. This statement retrieves all rows from the 96th row to the last:

SELECT * FROM tbl LIMIT 95,18446744073709551615; 
+0

如果你想数组,然后用所有的继续:'用户::跳过(10) - >得到() - >所有();' –

+0

谢谢,但此给出了一个错误:语法错误或访问冲突:1064你的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,在第1行的附近使用正确的语法(SQL:select * from'user' offset 10)。数据库以User :: all()方式工作正常。 – panthro

+0

这很奇怪。好的,请尝试更新代码。 –

2

尝试这样的肯定,这是工作。 。

$temp = User::count(); 
$count = $temp - 10; 

$data = User::take($count)->skip(10)->get(); 
1

Laravel 5返回雄辩的结果作为集合。 所以你可以使用collenction函数slice();

$users = User::get(); 
$slicedUsers = $users->slice(10); 
+2

它可以工作,但如果你用大表做这件事,它可以很容易地杀死内存。 –

+0

@AlexeyMezenin呀,那是真的。但是对于一些人来说,这个解决方案也可以。如果他们不与大桌子一起工作。 –

+2

@Autista_z它将检索所有的数据前10将被删除,而不是像AlexeyMezenin回答这样的回顾这样的诡计。 –