2015-09-30 5 views
0

У меня есть отношение «много-ко-многим» между моим клиентом и таблицами тегов. Клиент может иметь много тегов, и каждый тег может быть связан с несколькими клиентами.Как запросить сводную таблицу с использованием Eloquent в Laravel 5

На экране просмотра клиента я пытаюсь отобразить информацию о клиенте плюс все теги, связанные с этим клиентом.

Как изменить запрос ниже, чтобы получить строки клиента со всеми связанными с ним тегами?

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

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

модель Клиент

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

Clienttag модель

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

Client_clientags Таблица миграции

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(); 
    }); 
} 

Клиенты Таблица миграции

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 таблица миграции

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

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

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

ответ

0

Вы можете использовать "жадной загрузки" методы, такие как следующий

public function show($id) 
{ 
$client = Client::with('clienttag')->findOrFail($id); 

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

Проверка документации на http://laravel.com/docs/5.1/eloquent-relationships#eager-loading

Затем на ваш взгляд, вы можете распечатать теги

@foreach ($client->clienttag as $tag) 
    {!! $tag->tagname!!} (or whatever your field in clienttags table name is) 
@endforeach 
+0

Это работает как шарм! Спасибо @geoandri – user3489502

Смежные вопросы