Skip to content
Advertisement

How to get foreign key from eloquent collection in laravel

I have hasMany relationship in my User model;

 /**
 * Get the posts for the users.
 */
public function posts()
{
    return $this->hasMany(Posts::class); //foreign key assigned by user_id
}

I need to get a foreign id in Eloquent data

Controller;

use AppModelsUser;

$posts = User::find(1)->posts;

foreach ($posts as $post) {
    //
}
//for example
$foreign_key = $posts->foreign_key;
echo "all posts collection assigned foreign key is; ".$foreign_key;

Expected output;

1

How can I get the foreign key?

Advertisement

Answer

You can do the following. Since posts has hasmany relation so it return collection of object even though you have one item in posts.

foreach ($posts as $post) {
     
    echo $post->user_id;
}

or

 dd($posts->first()->user_id);

If you still need one item from posts relationship then you can add one relationship

public function post()
{
    return $this->hasOne(Posts::class); //foreign key assigned by user_id
}

then you can access

$posts = User::find(1)->post;

$foreign_key =$posts->user_id;
User contributions licensed under: CC BY-SA
8 People found this is helpful
Advertisement