Я новичок в отношениях и красноречив.Я до сих пор не понимаю, как работать с eloquent и pivot таблицами.
Ниже я попытаюсь описать мою проблему.У меня все еще есть проблемы с подключением таблиц Player - Layout - Content.
У меня есть следующая модель данных и я использую несколько сводных таблиц:
Table Players
Schema::create('players', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('extension');
$table->string('description')->nullable();
$table->string('status');
$table->timestamps();
});
Table Layouts
Schema::create('layouts', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->timestamps();
});
Таблица Layout_Player
Schema::create('layout_player', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('layout_id');
$table->unsignedInteger('player_id');
$table->timestamps();
});
Элементы таблицы
Schema::create('items', function (Blueprint $table) {
$table->increments('id');
$table->string('fieldname');
$table->string('art');
$table->timestamps();
});
Таблица Item_Layout
Schema::create('item_layout', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('item_id');
$table->unsignedInteger('layout_id');
$table->timestamps();
});
Содержимое таблицы
Schema::create('contents', function (Blueprint $table) {
$table->increments('id');
$table->text('text');
$table->unsignedInteger('item_layout_id');
$table->unsignedInteger('layout_player_id');
$table->timestamps();
});
Игроков сколько угодно.Каждый игрок может иметь несколько макетов.Одни и те же макеты могут быть назначены нескольким игрокам.Каждый макет имеет любое количество элементов.Каждый элемент назначается ровно одному макету.Содержание варьируется от игрока к игроку и зависит от назначенного макета и элемента.
Вот модели:
Player
protected $table = 'players';
protected $fillable = [
'name',
'extension',
'description'
];
public function layout(){
return $this->belongsToMany('App\Layout', 'layout_player', 'player_id', 'layout_id');
// return $this->belongsToMany(Layout::class);
}
Макет
protected $table = 'layouts';
protected $fillable = [
'name'
];
public function player(){
return $this->belongsToMany('App\Player', 'layout_player', 'layout_id', 'player_id');
// return $this->belongsToMany(Player::class);
}
public function item(){
return $this->belongsToMany('App\Item', 'item_layout', 'layout_id', 'item_id');
}
Item
protected $table = 'items';
protected $fillable = [
'fieldname',
'art'
];
public function layout(){
//return $this->hasOne(Layout::class);
return $this->belongsToMany('App\Layout', 'item_layout', 'item_id', 'layout_id');
}
Содержимое
protected $table = 'contents';
protected $fillable = [
'text',
'layout_player_id',
'item_layout_id'
];
Как получить правильные отношения между таблицами и сводными таблицами?Моя самая большая проблема связана с отношениями между контентом и таблицами layout_player и item_layout.
Не могли бы вы помочь мне здесь?Правильный ли мой подход?