Add a subselect based on relationship using withAggregate method

Updated at 11-Jan-2022, By samar

Add a subselect based on relationship using withAggregate method

Good day, guys. In this post, we’ll look at how to solve the "Add a subselect based on relationship using withAggregate method" programming puzzle.

You can add a subselect based on a relationship using the withAggregate method in Laravel. Sometimes you have to get the data from a column of another table like if you want to get a post from the posts table with the column data user’s name from users table. In that case the withAggregate method helps you to get the data from a column of another table.
  • Add a subselect based on relationship using withAggregate in Laravel

    Syntax :

    $posts = App\Models\Post::withAggregate('user', 'email')->first();
    

    Code Example : //app\Models\Post.php

    <?php
    
    namespace App\Models;
    
    use Illuminate\Database\Eloquent\Factories\HasFactory;
    use Illuminate\Database\Eloquent\Model;
    
    class Post extends Model
    {
        public function user()
        {
            return $this->belongsTo(User::class);
        }
    }
    

    routes\web.php

    Route::get('/subselect-with-aggregate', function(){
        $posts = App\Models\Post::withAggregate('user', 'email')->first();
        dd($posts);
    });
    

    Output :

    [▼
        "id" => 11
        "title" => "Labore do commodi et"
        "body" => "Lorem ipsum"
        "user_id" => 1
        "created_at" => "2021-10-13 05:10:23"
        "updated_at" => "2021-10-13 05:10:23"
        "user_email" => "[email protected]"
    ]

    You can get the email of user who created the post using user_email after getting the data from table.

Back to code snippet queries related laravel