从特定的where子句中获取最高id

时间:2016-03-29 21:44:10

标签: php laravel laravel-5 laravel-5.1

我的来宾数据库中有4条记录。

enter image description here

我正在尝试向note_display = 1并且ID最高的访客查询。

我试过

$last_note = DB::table('guests')->where('note_display','=',1)->where('id', DB::raw("(select max(`id`) from guests)"))->first();

我得到了

Trying to get property of non-object

我现在已经陷入困境,任何提示都会有很大的帮助吗?

3 个答案:

答案 0 :(得分:3)

此查询中无需使用raw。您可以运行一个简单的查询,如

Guest::where('note_display', 1)->orderBy('id', 'desc')->first();

它将返回具有最高IDnote_display = 1的来宾。

答案 1 :(得分:1)

原始sql字符串应该类似于SELECT * FROM guests WHERE note_display = 1 ORDER BY id DESC LIMIT 1,看起来你只能在子查询note_display = 1

中获得WHERE id={the maximum id present in the table}

答案 2 :(得分:1)

它选择note_display为0的最大id,因此尝试获取非对象错误。

如果你坚持要raw试试这个!

$last_note = DB::table('guests')->where('id', DB::raw("(select max(`id`) from guests where note_display = '1')"))->first();