mercredi 30 septembre 2015

How to query pivot table using Eloquent in Laravel 5

I have a many-to-many relationship between my client and tag tables. A client can have many tags, and each tag can be related to multiple clients.

On the client show view, i'm trying to display the client info plus all tags associated to this client.

How do I change the query below to retrieve the client row with all its related tags?

public function show($id)
{
    $client = Client::findOrFail($id);

    return view('clients.show')->with(['client' => $client]);
}

Client model

public function clienttag()
{
    return $this->belongsToMany('App\Clienttag');
}

Clienttag model

public function client()
{
    return $this->belongsToMany('App\Client');
}

Client_clientags table migration

public function up()
{
    Schema::create('client_clienttag', function(Blueprint $table)
    {
        $table->integer('client_id')->unsigned();
        $table->foreign('client_id')->references('id')->on('clients')->onDelete('cascade');

        $table->integer('clienttag_id')->unsigned();
        $table->foreign('clienttag_id')->references('id')->on('clienttags')->onDelete('cascade');

        $table->timestamps();
    });
}   

Clients table migration

public function up()
{
    Schema::create('clients', function(Blueprint $table)
    {
        $table->increments('id');

        $table->string('first_name');
        $table->string('last_name');

        $table->rememberToken();
        $table->timestamps();
    });
}

Clienttags table migration

public function up()
{
    Schema::create('clienttags', function(Blueprint $table)
    {
        $table->increments('id');

        $table->string('tag');
        $table->text('description');

        $table->rememberToken();
        $table->timestamps();

    });
}



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire