Мне нужно отфильтровать информацию о пользователе и вернуть только последнюю строку.
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'));
}
Есть идеи?
@Ученик где? Я не использую User
мои пользователи зациклены
Итак, вам нужен последний счет? Или что?
@Ученик да!..
$user->inovices->latest()
или $user->inovices()->latest()
@Ученик Method Illuminate\Database\Eloquent\Collection::latest does not exist.
Чтобы получить последнюю версию, вы можете сделать это:
$user->inovices->latest() or $user->inovices()->latest()
Метод last() упорядочивает все строки по типу created_at desc и берет первую.
Если это не работает, вы можете:
Модель User.php:
public function latestInovice() {
return $this->hasOne(Inovice::class)->latest();
}
А затем используйте:
$users = User::with(['latestInovice'])->get();
Я использовал код ниже, и теперь он показывает мою последнюю строку
{{$user->invoices->last()->type->name}}
Thanks to those for down-vote without providing solution, I just don't get it if my question was so wrong or that ridiculous why they couldn't solve it?!!
User::last() можно использовать