Djozeph
Djozeph

Reputation: 25

eloquent laravel relation hasManyThrough

I have 3 tables:

Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });

        Schema::create('cities', function (Blueprint $table) {
            $table->integer('id')->primary();
            $table->string('name',100);
            $table->string('state',50)->nullable();
            $table->string('country',10);
            $table->float('lot');
            $table->float('lat');
        });

        Schema::create('followed_cities', function (Blueprint $table) {
            $table->id();
            $table->integer('user_id');
            $table->integer('city_id');
        });

And i made that relation in User class:

    public function cities()
    {
        return $this->hasManyThrough(City::class,FollowedCity::class);
    }

I tried putting this code into Controller and it doesn't work

        $id=Auth::user()->id;
        $followedCities = User::with('cities')->findOrFail($id);

I'm trying to get details for every city that this user is following. Can someone help me?

Upvotes: 0

Views: 46

Answers (1)

Hanan Alhasan
Hanan Alhasan

Reputation: 300

you need to use Many to Many relation

in User.php

public function cities()
{
    return $this->belongsToMany(City::class , 'followed_cities');
}

Upvotes: 1

Related Questions