2016-12-10 8 views
1

I表を以下た:3つのテーブルの間のLaravelの関係?

  1. ユーザ(古典laravelテーブル)
  2. イベント
  3. user_events user_eventsで

Iイベントに割り当てられたユーザーを挿入し、テーブル構造がそうである。

Schema::create('user_events', function (Blueprint $table) { 
    $table->increments('id'); 
    $table->integer('user_id')->unsigned(); 
    $table->foreign('user_id')->references('id')->on('users')->onUpdate('cascade')->onDelete('cascade'); 
    $table->integer('event_id')->unsigned(); 
    $table->foreign('event_id')->references('id')->on('events')->onUpdate('cascade')->onDelete('cascade'); 
    $table->timestamps(); 
}); 

自分のイベントで認証ユーザー用のページを作成したいとします。

私はモデルのユーザーに次の関係を使用するidを取得するには:

public function userEvents() { 
    return $this->hasMany('App\Models\UserEvent'); 
} 

Troughtコントローラを、私は、イベントIDのリストを取得します。

私の以前のソースは以下のとおりです。 Laravel relation between 3 models

Laravel 5 relation between 3 tables

Laravel Eloquent Relation between 3 table

私の質問があり、このイベントIDのイベント名throught得るために行うためにここに何ですか? $user->userEventsによって返されたコレクションから

答えて

0

あなたのスキーマを見ると、関係はone-to-manyではなくmany-to-manyである必要があります。のみ、他のユーザーに通知するために

$events = auth()->user()->events; // returns collection of Event model 
+0

:次に、あなたのコントローラで、によって認証されたユーザのすべてのイベントを取得

public function events() { return $this->belongsToMany('App\Models\Event'); } 

:だからUserモデルでは、あなたの関係のように見えます

私も持っていましたシンタックスエラー、EventUserの代わりにUserEventがありましたが、この変更がすべてうまくいきました:)、ありがとう – nowilius

1

あなたは可能性がpluckname

$user->userEvents->pluck('name'); 

は、この情報がお役に立てば幸いです。

関連する問題