Another "hidden gem" of Eloquent. Let's imagine that you want to query all rows from the table and also one related row - not all of them, but the newest one. Apparently, it's pretty easy.
Let's take a real-life example. Let's say we have Authors and Books, with 1-n relationship, so every author can have one or more books. And we want to show all Authors and their latest Book.
Step 1. File app/Author.php - new method:
public function latestBook()
{
return $this->hasOne('\App\Book')->latest();
}
Method latest() orders all rows by created_at desc, and takes the first one.
Step 2. Controller:
$authors = Author::with('latestBook')->get();
foreach ($authors as $author) {
echo $author->name . ': ' . $author->latestBook->title;
}
Also, you can use oldest() instead of latest() - then it would take the first record with rule order by created_at asc.
No comments or questions yet...