Parent OrderBy From Many Child's Laravel Example

  • 22-05-2022
  • 1511
  • Laravel 9
  • Haresh Chauhan

Laravel Eloquent relationships are defined as a method on your model eloquent class. Especially when you work with parent child relationship.

Here Laravel, We need to use hasmany relationship for ordering child in terms of id, name, created date, etc...

But sometimes we need to orderBy() parent from child, Which is a little bit difficult for the developer.

In this post your will easy to parent ordering when you have more than one child.

The parent will order from the child relationship. So below is one example that will help you with how to order parents from many child's.

In this example, One doctor has multiple clinics. So I want to get the nearest clinic's doctor's order from the latitude and longitude of the user to the clinic's doctor.

Using addSelect() the query I am fetching clinic's of the doctor. This is a doctor list but this list orderBy() from clinic latitude and longitude, So the user will get a doctor list from the nearest clinic's doctor.

Here below is a working example please check in your query.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Doctor;
use App\Clinic;

class HomeController extends Controller
{
    public function getAscDoctorFromClinic(Request $request)
    {
        $latitude = $request->latitude;
        $longitude = $request->longitude;
        
        $doctor = Doctor::where('verification',1)
            ->where('status',1)
            ->select(
                'id',
                'name',
                'college',
                'category',
                'experience',
                'profile_image',
                'verification',
                'vaccinated',
                'rating',
                'success_patient'
            )
            ->addSelect(['distance' => Clinic::select(DB::raw("6371 * acos(cos(radians(" . $latitude . ")) 
                * cos(radians(latitude)) 
                * cos(radians(longitude) - radians(" . $longitude . ")) 
                + sin(radians(" .$latitude. ")) 
                * sin(radians(latitude)))"))->whereColumn('doctor_id','doctors.id')->limit(1)
            ])
            ->orderBy('distance','asc')
            ->get();

            return view('doctor',compact('doctor'));
    }
}

This will helper you to parent orderBy() from child base.

Thanks for reading our post...


We always thanks to you for reading our blogs.


dharmesh-image

Dharmesh Chauhan

(Swapinfoway Founder)

Hello Sir, We are brothers origin from Gujarat India, Fullstack developers working together since 2016. We have lots of skills in web development in different technologies here I mention PHP, Laravel, Javascript, Vuejs, Ajax, API, Payment Gateway Integration, Database, HTML5, CSS3, and Server Administration. So you need our service Please Contact Us

haresh-image

Haresh Chauhan

(Co-Founder)


We Are Also Recommending You :