Logo

dev-resources.site

for different kinds of informations.

Laravel Eloquent ORM in Bangla Part-4 (Retrieving Single Models / Aggregates)

Published at
1/9/2025
Categories
Author
Sontus Chandra Anik
Categories
1 categories in total
open
Laravel Eloquent ORM in Bangla Part-4 (Retrieving Single Models / Aggregates)

Laravel Eloquent-āĻ Retrieving Single Models / Aggregates āĻĢāĻŋāĻšāĻžāĻ°āĻŸāĻŋ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ āĻĨā§‡āĻ•ā§‡ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻāĻ•āĻŸāĻŋ āĻ°ā§‡āĻ•āĻ°ā§āĻĄ āĻŦāĻž āĻ…ā§āĻ¯āĻžāĻ—ā§āĻ°āĻŋāĻ—ā§‡āĻŸ āĻ­ā§āĻ¯āĻžāĻ˛ā§ (āĻ¯ā§‡āĻŽāĻ¨: āĻ•āĻžāĻ‰āĻ¨ā§āĻŸ, āĻŽā§āĻ¯āĻžāĻ•ā§āĻ¸, āĻŽāĻŋāĻ¨, āĻāĻ­āĻžāĻ°ā§‡āĻœ) āĻ°āĻŋāĻŸā§āĻ°āĻŋāĻ­ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻšāĻ¯āĻŧāĨ¤ āĻāĻŸāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻ¤āĻ–āĻ¨ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻšāĻ¯āĻŧ āĻ¯āĻ–āĻ¨ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻĄā§‡āĻŸāĻž āĻŦāĻž āĻĄā§‡āĻŸāĻž āĻ¸ā§‡āĻŸā§‡āĻ° āĻ¸āĻ‚āĻ•ā§āĻˇāĻŋāĻĒā§āĻ¤ āĻĒāĻ°āĻŋāĻ¸āĻ‚āĻ–ā§āĻ¯āĻžāĻ¨ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨āĨ¤

Retrieving Single Models

ā§§. find() āĻŽā§‡āĻĨāĻĄ

āĻĒā§āĻ°āĻžāĻ‡āĻŽāĻžāĻ°āĻŋ āĻ•ā§€-āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ°ā§‡āĻ•āĻ°ā§āĻĄ āĻ°āĻŋāĻŸā§āĻ°āĻŋāĻ­ āĻ•āĻ°āĻ¤ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤

use App\Models\Post;

// āĻĒā§āĻ°āĻžāĻ‡āĻŽāĻžāĻ°āĻŋ āĻ•ā§€ ā§§-āĻāĻ° āĻ°ā§‡āĻ•āĻ°ā§āĻĄ
$post = Post::find(1);

if ($post) {
    echo $post->title;
}

ā§¨. findOrFail() āĻŽā§‡āĻĨāĻĄ

āĻ°ā§‡āĻ•āĻ°ā§āĻĄ āĻ¨āĻž āĻĒā§‡āĻ˛ā§‡ 404 HTTP Exception āĻ›ā§āĻĄāĻŧā§‡ āĻĻā§‡āĻ¯āĻŧāĨ¤

$post = Post::findOrFail(1);

ā§Š. first() āĻŽā§‡āĻĨāĻĄ

āĻĒā§āĻ°āĻĨāĻŽ āĻ°ā§‡āĻ•āĻ°ā§āĻĄ āĻ°āĻŋāĻŸā§āĻ°āĻŋāĻ­ āĻ•āĻ°āĻ¤ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤

$post = Post::where('status', 'published')->first();

if ($post) {
    echo $post->title;
}

ā§Ē. firstOrFail() āĻŽā§‡āĻĨāĻĄ

āĻĒā§āĻ°āĻĨāĻŽ āĻ°ā§‡āĻ•āĻ°ā§āĻĄ āĻ¨āĻž āĻĒā§‡āĻ˛ā§‡ 404 HTTP Exception āĻ›ā§āĻĄāĻŧā§‡ āĻĻā§‡āĻ¯āĻŧāĨ¤

$post = Post::where('status', 'published')->firstOrFail();

ā§Ģ. value() āĻŽā§‡āĻĨāĻĄ

āĻ•ā§‹āĻ¨ā§‹ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ˛āĻžāĻŽā§‡āĻ° āĻāĻ•āĻ• āĻ­ā§āĻ¯āĻžāĻ˛ā§ āĻ°āĻŋāĻŸā§āĻ°āĻŋāĻ­ āĻ•āĻ°āĻ¤ā§‡ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻšāĻ¯āĻŧāĨ¤

$title = Post::where('id', 1)->value('title');

ā§Ŧ. pluck() āĻŽā§‡āĻĨāĻĄ

āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ˛āĻžāĻŽā§‡āĻ° āĻāĻ•āĻžāĻ§āĻŋāĻ• āĻ­ā§āĻ¯āĻžāĻ˛ā§ āĻ°āĻŋāĻŸāĻžāĻ°ā§āĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤

$titles = Post::where('status', 'published')->pluck('title');

Retrieving Aggregates

Eloquent āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ…ā§āĻ¯āĻžāĻ—ā§āĻ°āĻŋāĻ—ā§‡āĻŸ āĻŽā§‡āĻĨāĻĄāĻ—ā§āĻ˛ā§‹ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ āĻĨā§‡āĻ•ā§‡ āĻĄā§‡āĻŸāĻž āĻ—āĻŖāĻ¨āĻž āĻ•āĻ°āĻ¤ā§‡ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻšāĻ¯āĻŧāĨ¤ āĻ¨āĻŋāĻšā§‡ āĻ•āĻŋāĻ›ā§ āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻŽā§‡āĻĨāĻĄ āĻĻā§‡āĻ–āĻžāĻ¨ā§‹ āĻšāĻ˛ā§‹:

ā§§. count()

āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡ āĻ°ā§‡āĻ•āĻ°ā§āĻĄā§‡āĻ° āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž āĻ—āĻŖāĻ¨āĻž āĻ•āĻ°ā§‡āĨ¤

$postCount = Post::count();

ā§¨. max()

āĻ•ā§‹āĻ¨ā§‹ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ˛āĻžāĻŽā§‡āĻ° āĻ¸āĻ°ā§āĻŦā§‹āĻšā§āĻš āĻŽāĻžāĻ¨ āĻ°āĻŋāĻŸāĻžāĻ°ā§āĻ¨ āĻ•āĻ°ā§‡āĨ¤

$maxViews = Post::max('views');

ā§Š. min()

āĻ•ā§‹āĻ¨ā§‹ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ˛āĻžāĻŽā§‡āĻ° āĻ¸āĻ°ā§āĻŦāĻ¨āĻŋāĻŽā§āĻ¨ āĻŽāĻžāĻ¨ āĻ°āĻŋāĻŸāĻžāĻ°ā§āĻ¨ āĻ•āĻ°ā§‡āĨ¤

$minViews = Post::min('views');

ā§Ē. avg()

āĻ•ā§‹āĻ¨ā§‹ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ˛āĻžāĻŽā§‡āĻ° āĻ—āĻĄāĻŧ āĻŽāĻžāĻ¨ āĻ°āĻŋāĻŸāĻžāĻ°ā§āĻ¨ āĻ•āĻ°ā§‡āĨ¤

$averageViews = Post::avg('views');

ā§Ģ. sum()

āĻ•ā§‹āĻ¨ā§‹ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ˛āĻžāĻŽā§‡āĻ° āĻŽā§‹āĻŸ āĻ¯ā§‹āĻ—āĻĢāĻ˛ āĻ°āĻŋāĻŸāĻžāĻ°ā§āĻ¨ āĻ•āĻ°ā§‡āĨ¤

$totalViews = Post::sum('views');

Combination of Single Models and Aggregates

āĻ†āĻĒāĻ¨āĻŋ āĻāĻ•āĻ¸āĻžāĻĨā§‡ āĻ…ā§āĻ¯āĻžāĻ—ā§āĻ°āĻŋāĻ—ā§‡āĻŸ āĻāĻŦāĻ‚ āĻ°ā§‡āĻ•āĻ°ā§āĻĄ āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ°āĻŋāĻ‚ āĻŽā§‡āĻĨāĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤

$totalPublishedPosts = Post::where('status', 'published')->count();

$maxPublishedViews = Post::where('status', 'published')->max('views');

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ: Single Record āĻāĻŦāĻ‚ Aggregates āĻāĻ•āĻ¤ā§āĻ°ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°

use App\Models\Post;

// āĻĒā§āĻ°āĻĨāĻŽ Published āĻĒā§‹āĻ¸ā§āĻŸ āĻ°āĻŋāĻŸā§āĻ°āĻŋāĻ­ āĻ•āĻ°ā§āĻ¨
$post = Post::where('status', 'published')->first();

// āĻ¯āĻĻāĻŋ āĻĒā§‹āĻ¸ā§āĻŸ āĻĒāĻžāĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻ¯āĻŧ
if ($post) {
    echo "Title: " . $post->title;
}

// Published āĻĒā§‹āĻ¸ā§āĻŸā§‡āĻ° āĻŽā§‹āĻŸ āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž
$totalPublishedPosts = Post::where('status', 'published')->count();

// Published āĻĒā§‹āĻ¸ā§āĻŸāĻ—ā§āĻ˛ā§‹āĻ° āĻ¸āĻ°ā§āĻŦā§‹āĻšā§āĻš āĻ­āĻŋāĻ‰
$maxPublishedViews = Post::where('status', 'published')->max('views');

echo "Total Published Posts: $totalPublishedPosts";
echo "Maximum Views for Published Posts: $maxPublishedViews";

Featured ones: