Я пытаюсь соединить три модели в своем приложении Laravel. Модели Bottle, Label и Spirit. Я хочу получить все метки на основе bottle_id и spirit_id, поэтому я создал сводную таблицу для хранения отношений между Bottle -Label-Spirit. Пожалуйста, смотрите ниже мои текущие настройки.
DB
+---------+--------+---------+-------------------------+
| bottles | labels | spirits | bottle_label_spirit |
+---------+--------+---------+-------------------------+
| id | id | id | id |
| name | name | name | bottle_id |
| | | | label_id |
| | | | spirit_id |
| | | | created_at |
| | | | updated_at |
+---------+--------+---------+-------------------------+
Где bottle_label_spirit
- моя сводная таблица
BOTTLE CLASS
class Bottle extends Model
{
public function labels() {
return $this->belongsToMany(Label::class)->withTimestamps();
}
public function spirits() {
return $this->belongsToMany(Spirit::class)->withTimestamps();
}
}
ЭТИКЕТКА
class Label extends Model
{
public function bottles() {
return $this->belongsToMany(Bottle::class)->withTimestamps();
}
public function spirits() {
return $this->belongsToMany(Spirit::class)->withTimestamps();
}
}
ДУХОВНЫЙ КЛАСС
class Spirit extends Model
{
public function labels() {
return $this->belongsToMany(Label::class)->withTimestamps();
}
public function bottles() {
return $this->belongsToMany(Bottle::class)->withTimestamps();
}
}
ВОПРОСЫ
Итак, мои вопросы:
- Это правильный подход для обработки этих
manyToMany
отношений? - Если да, как я могу получить все метки, где bottle_id = 1 и spirit_id = 1