У меня есть 3 таблицы:Laravel отношения с сводной таблицы
Категория (идентификатор, имя)
Category_Tournament (category_id, tournament_id) -> сводной таблицы Category_Tournament_User (category_id, tournament_id, user_id, подтверждено)
Категория список доступных категорий Category_Tournament список категории админы сконфигурированы Category_tournament_User это категория пользователь имеет зарегестрирован
Чтобы получить все категории в турнире, я могу сделать это легко с:
tournament->categories
определения отношения belongsToMany в турнире модели
То, что я не знаю, как определить отношения с последней таблицей ,
Что мне нужно, это пользователь нажмет на несколько категорий, и я могу запустить что-то вроде:
tournament->user_categories->sync($userCategories)
, где я должен синхронизировать таблицы Category_Tournament_User (с category_id, tournament_id, user_id)
Что такое лучший способ добиться этого ???
EDIT:
Модель турнира:
class Tournament extends Model
{
protected $table = 'tournament';
public $timestamps = true;
protected $fillable = [
'name',
'date',
'type',
];
/**
* A tournament is owned by a user
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function owner()
{
return $this->belongsTo('App\User', 'user_id','id');
}
/**
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function categories()
{
return $this->belongsToMany('App\Category')
->withTimestamps();
}
}
Модель Категория
class Category extends Model
{
protected $table = 'category';
public $timestamps = true;
protected $fillable = [
'id',
'name',
];
public function tournaments()
{
return $this->belongsToMany('App\Tournament');
}
}
Модель пользователя:
class User extends Model implements AuthenticatableContract, CanResetPasswordContract
{
use Authenticatable, Authorizable, CanResetPassword, HasRole;
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'users';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = ['name','firstname','lastname','email', 'password','avatar',country_id','role_id',,'provider','provider_id','verified'];
/**
* The attributes excluded from the model's JSON form.
*
* @var array
*/
protected $hidden = ['password', 'remember_token'];
/**
* Boot the model.
*
* @return void
*/
public static function boot()
{
parent::boot();
static::creating(function ($user) {
$user->token = str_random(30);
});
}
public function role()
{
return $this->belongsTo('App\Role');
}
public function settings()
{
return $this->hasOne('App\Settings');
}
public function invites()
{
return $this->hasMany('App\Invite', 'email','email');
}
public function country()
{
return $this->belongsTo('Webpatser\Countries\Countries');
}
/**
* A user can have many tournaments
*
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function tournaments()
{
return $this->hasMany('App\Tournament');
}
}
Да, но моя проблема заключается в том, что Категория_Турнинг как составной ПК –
немного больше поможет! Я потратил 2 дня на эту проблему, и это будет трудно разрешить с помощью двух строк. –
. Хорошо добавьте модели в ваш OP. –