dev-resources.site
for different kinds of informations.
Laravel Eloquent ORM in Bangla Part-3 (Models Retrieving)
Laravel Eloquent āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ Models Retrieving āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻĨā§āĻā§ āĻĄā§āĻāĻž āĻĢā§āĻ āĻāĻ°āĻž āĻā§āĻŦāĻ āĻ¸āĻšāĻāĨ¤ Eloquent ORM āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻ¨ā§āĻāĻžāĻ°ā§āĻā§āĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻ āĻāĻŦāĻ āĻ°āĻŋāĻĄā§āĻŦāĻ˛ āĻŽā§āĻĨāĻĄ āĻ¸āĻ°āĻŦāĻ°āĻžāĻš āĻāĻ°ā§āĨ¤
āĻ¨āĻŋāĻā§ Models Retrieving āĻāĻ° āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ§āĻžāĻĒ āĻāĻŦāĻ āĻā§āĻļāĻ˛ āĻĻā§āĻāĻžāĻ¨ā§ āĻšāĻ˛ā§:
ā§§. āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ°ā§āĻāĻ°ā§āĻĄ āĻ°āĻŋāĻā§āĻ°āĻŋāĻ āĻāĻ°āĻž (Retrieving All Records)
all()
āĻŽā§āĻĨāĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ°ā§āĻāĻ°ā§āĻĄ āĻĢā§āĻ āĻāĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤
use App\Models\Post;
$posts = Post::all();
- āĻāĻāĻŋ āĻāĻāĻāĻŋ Collection āĻ°āĻŋāĻāĻžāĻ°ā§āĻ¨ āĻāĻ°ā§āĨ¤
- āĻāĻĒāĻ¨āĻŋ
foreach
āĻŦāĻž āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ Collection āĻŽā§āĻĨāĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻĄā§āĻāĻž āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨:
foreach ($posts as $post) {
echo $post->title;
}
ā§¨. āĻāĻāĻ āĻ°ā§āĻāĻ°ā§āĻĄ āĻ°āĻŋāĻā§āĻ°āĻŋāĻ āĻāĻ°āĻž (Retrieving a Single Record)
i) find()
āĻŽā§āĻĨāĻĄ:
āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻā§āĻŦāĻŋāĻ˛ āĻĨā§āĻā§ āĻĒā§āĻ°āĻžāĻāĻŽāĻžāĻ°āĻŋ āĻā§ āĻĻāĻŋāĻ¯āĻŧā§ āĻāĻāĻ āĻ°ā§āĻāĻ°ā§āĻĄ āĻĢā§āĻ āĻāĻ°ā§āĨ¤
$post = Post::find(1);
if ($post) {
echo $post->title;
}
ii) findOrFail()
āĻŽā§āĻĨāĻĄ:
āĻ¯āĻĻāĻŋ āĻ°ā§āĻāĻ°ā§āĻĄ āĻ¨āĻž āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻāĻŋ 404 HTTP Exception āĻā§āĻĄāĻŧā§ āĻĻā§āĻ¯āĻŧāĨ¤
$post = Post::findOrFail(1);
iii) first()
āĻŽā§āĻĨāĻĄ:
āĻĒā§āĻ°āĻĨāĻŽ āĻ°ā§āĻāĻ°ā§āĻĄ āĻ°āĻŋāĻā§āĻ°āĻŋāĻ āĻāĻ°ā§āĨ¤
$post = Post::where('status', 'published')->first();
iv) firstOrFail()
āĻŽā§āĻĨāĻĄ:
āĻĒā§āĻ°āĻĨāĻŽ āĻ°ā§āĻāĻ°ā§āĻĄ āĻ¨āĻž āĻĒā§āĻ˛ā§ 404 HTTP Exception āĻĻā§āĻ¯āĻŧāĨ¤
$post = Post::where('status', 'published')->firstOrFail();
ā§Š. āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ°ā§āĻāĻ°ā§āĻĄ āĻ°āĻŋāĻā§āĻ°āĻŋāĻ āĻāĻ°āĻž (Query Constraints)
āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻĨā§āĻā§ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ°ā§āĻāĻ°ā§āĻĄ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ where
āĻāĻŦāĻ āĻ
āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻāĻ¨ā§āĻĄāĻŋāĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤
i) where
āĻŽā§āĻĨāĻĄ:
$posts = Post::where('status', 'published')->get();
ii) āĻāĻāĻžāĻ§āĻŋāĻ āĻāĻ¨ā§āĻĄāĻŋāĻļāĻ¨:
$posts = Post::where('status', 'published')
->where('user_id', 1)
->get();
iii) orWhere
āĻŽā§āĻĨāĻĄ:
$posts = Post::where('status', 'published')
->orWhere('status', 'draft')
->get();
ā§Ē. āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ˛āĻžāĻŽ āĻ°āĻŋāĻā§āĻ°āĻŋāĻ āĻāĻ°āĻž
āĻĄāĻŋāĻĢāĻ˛ā§āĻāĻāĻžāĻŦā§, Eloquent āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻ˛āĻžāĻŽ āĻ°āĻŋāĻā§āĻ°āĻŋāĻ āĻāĻ°ā§āĨ¤ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ˛āĻžāĻŽ āĻĒā§āĻ¤ā§ select()
āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤
$posts = Post::select('title', 'content')->get();
ā§Ģ. āĻĒā§āĻāĻŋāĻ¨ā§āĻļāĻ¨ (Paginate Records)
paginate()
āĻŽā§āĻĨāĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ°ā§āĻāĻ°ā§āĻĄ āĻĒā§āĻāĻŋāĻ¨ā§āĻ āĻāĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤
$posts = Post::paginate(10);
āĻĒā§āĻāĻŋāĻ¨ā§āĻļāĻ¨ā§āĻ° āĻ˛āĻŋāĻā§āĻ āĻĻā§āĻāĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ Blade āĻā§āĻŽāĻĒā§āĻ˛ā§āĻā§:
{{ $posts->links() }}
ā§Ŧ. āĻāĻžāĻā§āĻāĻŋāĻ (Chunking)
āĻ
āĻ¨ā§āĻ āĻĄā§āĻāĻž āĻĨāĻžāĻāĻ˛ā§ āĻāĻāĻŋ āĻŽā§āĻŽā§āĻ°āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻŽāĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¯ā§āĻā§āĨ¤
Post::chunk(100, function ($posts) {
foreach ($posts as $post) {
echo $post->title;
}
});
ā§. āĻ°ā§āĻāĻ°ā§āĻĄ āĻ āĻ°ā§āĻĄāĻžāĻ° āĻāĻ°āĻž (Ordering Results)
āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻ°ā§āĻāĻ°ā§āĻĄāĻā§āĻ˛ā§āĻā§ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻā§āĻ°āĻŽā§ āĻ°āĻŋāĻā§āĻ°āĻŋāĻ āĻāĻ°āĻ¤ā§ orderBy()
āĻŽā§āĻĨāĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤
$posts = Post::orderBy('created_at', 'desc')->get();
ā§Ž. āĻ˛āĻŋāĻŽāĻŋāĻ āĻāĻŦāĻ āĻ āĻĢāĻ¸ā§āĻ
āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ¸āĻāĻā§āĻ¯āĻ āĻ°ā§āĻāĻ°ā§āĻĄ āĻĒā§āĻ¤ā§ take()
āĻŦāĻž limit()
āĻāĻŦāĻ skip()
āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤
$posts = Post::take(5)->get(); // āĻĒā§āĻ°āĻĨāĻŽ ā§ĢāĻāĻŋ āĻ°ā§āĻāĻ°ā§āĻĄ
$posts = Post::skip(10)->take(5)->get(); // ā§§ā§ĻāĻāĻŋ āĻ¸ā§āĻāĻŋāĻĒ āĻāĻ°ā§ āĻĒāĻ°ā§āĻ° ā§ĢāĻāĻŋ
ā§¯. āĻ ā§āĻ¯āĻžāĻā§āĻ°āĻŋāĻā§āĻ āĻŽā§āĻĨāĻĄāĻ¸ (Aggregates)
i) āĻāĻžāĻāĻ¨ā§āĻ:
$count = Post::count();
ii) āĻŽā§āĻ¯āĻžāĻā§āĻ¸:
$maxViews = Post::max('views');
iii) āĻŽāĻŋāĻ¨:
$minViews = Post::min('views');
iv) āĻāĻāĻžāĻ°ā§āĻ:
$avgViews = Post::avg('views');
v) āĻā§āĻāĻžāĻ˛:
$totalViews = Post::sum('views');
ā§§ā§Ļ. āĻāĻžāĻ¸ā§āĻāĻŽ āĻ°āĻŋāĻ˛ā§āĻļāĻ¨āĻļāĻŋāĻĒ āĻ°ā§āĻā§āĻ°āĻŋāĻāĻžāĻ˛
Eloquent āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻŽāĻĄā§āĻ˛ā§āĻ° āĻĄā§āĻāĻž āĻ°āĻŋāĻā§āĻ°āĻŋāĻ āĻāĻ°āĻž āĻ¸āĻŽā§āĻāĻŦāĨ¤
i) āĻ˛ā§āĻĄ āĻ°āĻŋāĻ˛ā§āĻļāĻ¨āĻļāĻŋāĻĒ (Eager Loading):
$posts = Post::with('comments')->get();
ii) āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ°āĻŋāĻ˛ā§āĻļāĻ¨āĻļāĻŋāĻĒ:
$posts = Post::with(['comments', 'user'])->get();
ā§§ā§§. āĻ° āĻāĻŦāĻ āĻ° āĻĢāĻžāĻ°ā§āĻ¸ā§āĻ āĻŽā§āĻĨāĻĄ (Raw Queries)
Laravel-āĻāĻ° DB
āĻĢā§āĻ¯āĻžāĻ¸ā§āĻĄ āĻĻāĻŋāĻ¯āĻŧā§ āĻāĻžāĻ¸ā§āĻāĻŽ SQL āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤
use Illuminate\Support\Facades\DB;
$posts = DB::select('SELECT * FROM posts WHERE status = ?', ['published']);
Featured ones: