Add a subselect based on relationship using withAggregate method

Created 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" => "john@example.com"
    ]

    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

If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.

Buy Me A Coffee

Don't forget to share this article! Help us spread the word by clicking the share button below.

We appreciate your support and are committed to providing you valuable and informative content.

We are thankful for your never ending support.