Laravel 5.2中的最新条件后如何获取行号?

时间:2018-08-12 18:28:52

标签: mysql laravel laravel-5.2

我有一个名为product的表。这是表的结构:

id name    date         status
1   A    2018-8-10        z
2   A    2018-8-11        x
3   A    2018-8-12        z
4   A    2018-8-13        z
5   A    2018-8-14        x   <- After this, last status = x
6   A    2018-8-15        z
7   A    2018-8-16        z
8   A    2018-8-17        z

现在,我要在status = x的行号位于最后一个表示3行的x之后。

2 个答案:

答案 0 :(得分:2)

如果您使用普通查询,则可以执行以下操作。因此,找到状态为x的最后一个条目。然后选择所有大于此ID的值。然后,您应该具有所有其余条目。

SELECT * FROM table t WHERE t.id > (SELECT id FROM table WHERE status = 'x' LIMIT 1 ORDER BY id DESC)

我在Laravel不太好,但是您可以尝试以下方法:

$result = myModel::latest('id')->where('status','x')->first();
$row_count = myModel::where('id','>',$result->id)->count();

答案 1 :(得分:1)

您可以通过编写以下两个查询来做到这一点:

 $result = modelName::latest('date')->where('status','x')->first();
 $row_count = modelName::where('date','>',$result->date)->count();