2016-11-27 20 views
0

私は、laravelでピボットテーブルの使用についてかなり簡単な質問があります。まず、私の状況に関するいくつかの情報を与えて、私は2つのテーブル名 "Vehicles"と "Events"を持っています。イベントに登録した車両を保持するためのテーブルを作成したいと思います。今、これらの2つのテーブルの関係は、「多くの車両は多くのイベントに登録できます」とその逆の関係になります。これを達成するにはPivotテーブルが最善の方法でしょうか?もしそうなら、より多くの特異値が同じテーブルに存在するでしょうか?Laravel多対多ピボットテーブル

答えて

1

あなたのモデルでこのような何かをすることによって、複数の車両や複数のイベントに車でイベントを関連付けることができます(テストしていません):

Vehicle.php

<?php 

namespace App; 

use App\Event; 
use Illuminate\Database\Eloquent\Model; 

class Vehicle extends Model 
{ 

    ... 


    /** 
    * Get the events that this vehicle belongs to. 
    * 
    * @return \App\Event 
    */ 
    public function events() 
    { 
     return $this->belongsToMany(Event::class, 'vehicle_event'); 
    } 
} 

イベント。 PHP

<?php 

namespace App; 

use App\Vehicle; 
use Illuminate\Database\Eloquent\Model; 

class Event extends Model 
{ 

    ... 


    /** 
    * Get the vehicles that this event has. 
    * 
    * @return \App\Vehicle 
    */ 
    public function events() 
    { 
     return $this->hasMany(Vehicle::class, 'vehicle_event'); 
    } 
} 

また、ピボットテーブル:

... 

    /** 
    * Run the migrations. 
    * 
    * @return void 
    */ 
    public function up() 
    { 
     Schema::create('vehicle_event', function(Blueprint $table) 
     { 
      $table->integer('vehicle_id')->unsigned()->index(); 
      $table->foreign('vehicle_id')->references('id')->on('vehicles'); 
      $table->integer('event_id')->unsigned()->index(); 
      $table->foreign('event_id')->references('id')->on('events'); 
     }); 
    } 

    /** 
    * Reverse the migrations. 
    * 
    * @return void 
    */ 
    public function down() 
    { 
     Schema::dropIfExists('vehicle_event'); 
    } 

    ... 

その後、あなたは、イベントまたはその逆で車を関連付けるためにattach()detach()を使用することができます。

+0

ピボットテーブルを別のテーブルと組み合わせることは可能でしょうか?たとえば、私はもっと一般的な情報を持つテーブルを持っています。 – JoshuaJohnson2896

+0

'$ this-> hasMany(Vehicle :: class) - > withPivot( 'column1'、 'column2');' $ model->でアクセスできる他のフィールドをピボットテーブルに追加することができます。ピボット - >カラム1 ' – Winter

+0

ありがとう、それは私が知りたかったものです – JoshuaJohnson2896

関連する問題