2016-08-10 3 views
0

Я работаю с Laravel 5.2 и у меня есть две модели: User и CompanyLaravel множественным ManyToMany между теми же моделями

У меня есть соотношение между ManyToMany тезисы двух моделей (с belongsToMany), поэтому я получаю таблицу company_user поворота.

Например, моя миграция для компании:

Schema::create('companies', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->string('name'); 
     $table->timestamps(); 
    }); 

    Schema::create('company_user', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->integer('company_id')->unsigned(); 
     $table->integer('user_id')->unsigned(); 
    }); 

Как я могу дублировать это соотношение? Мне нужно два ManyToMany между User и Company.

Один из них знает, находится ли пользователь в компании, а другой - для системы подписки.

+0

@Andraud Что вы имеете в виду, дублируя это соотношение? И вам нужно два ManyToMany между пользователем и компанией? –

ответ

1

Вы можете создать Subscription модель (с соответствующей subscriptions таблицы), которая имеет две колонки, удерживающие значения внешнего ключа: user_id и company_id. Вы также можете сохранить любую дополнительную информацию в этой таблице (такую ​​как цена подписки, дата истечения срока действия и т. Д.).

Это сделает ваше отношение а «имеет много», и вы могли бы получить подписался компании с «имеет много через» отношения:

class User extends Authenticatable 
{ 
    public function subscriptions() 
    { 
     return $this->hasMany(Subscription::class); 
    } 

    public function subscribedCompanies() 
    { 
     return $this->hasManyThrough(Company::class, Subscription::class); 
    } 
} 
Смежные вопросы