Laravel last()用where子句?

时间:2016-12-11 20:28:56

标签: laravel

在我的刀片模板中,我有一个last()方法。

{{ $statuses->last()->body }}

现在这个工作得很好,但是我可以在这里放一个where子句吗?有点像...

{{ $statuses->where('something', 0)->last()->body }}

3 个答案:

答案 0 :(得分:2)

{{ $statuses->where('something', 0)->last()->body }}

这不起作用,因为集合中没有任何内容。换句话说,集合返回后,函数实际上是一个空数组,而last()给你null

要测试这个..你可以简单地做到这一点

dd($statuses->last(), $statuses->where('something', 0)->last());

你会知道我是否正确:)

所以......要运行它,你必须做类似

的事情
{{ $statuses->where('something', 0)->last() ? $statuses->where('something', 0)->last()->body : null }}

//or
if($statuses->where('something', 0)->last()) {
  $statuses->where('something', 0)->last()->body;
}

:)

答案 1 :(得分:0)

您可以执行此操作,但您应首先检查null,因为如果没有包含something = 0的项目,则会返回null

<?php $item = $statuses->where('something', 0)->last(); >
{{ is_null($item) ? '' : $item->body }}

https://laravel.com/docs/5.3/collections#method-last

答案 2 :(得分:-1)

last()方法闪现在Collection类中。 Where返回查询构建器。

你需要这样做:

...->where(...)->get()->last()

但是这个查询非常不合适,因为你加载所有记录只使用一个。

尝试对查询进行排序并使用take(1)来限制结果。