在laravel刀片中获取最新行

时间:2019-04-10 10:19:08

标签: php laravel

我需要过滤用户信息并仅返回最新行。

代码

Blade

@foreach($users as $user)

    //user data
    @foreach($user->invoices as $invoice)
        {{$invoice->type->name}}
    @endforeach

@endforeach

这将返回我需要过滤并仅获取最新发票的所有用户发票。

问题

我知道我可以通过控制器中的first()获取最新行,但是由于此数据在我的用户页面(显示所有用户)中,因此我无法在控制器中循环用户,因此我需要获取刀片中的first操作。

Controller

public function index()
{
    $users = User::orderby('id', 'desc')->get();

    return view('admin.users.index', compact('users'));
}

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

要获得最新的创新,您可以执行以下操作:

$user->inovices->latest() or $user->inovices()->latest()

方法latest()按created_at desc对所有行进行排序,并采用第一个。

如果这样不起作用,您可以:

User.php模型:

public function latestInovice() {
    return $this->hasOne(Inovice::class)->latest();
}

然后使用:

$users = User::with(['latestInovice'])->get();

答案 1 :(得分:0)

已解决

我在下面使用了代码,现在显示了我的最新行

{{$user->invoices->last()->type->name}}
  

感谢那些没有提供解决方案的人的不赞成,我只是没有   如果我的问题太错了,或者为什么他们不能这样做,那太荒谬了   解决吗?!