Получите связь «один ко многим» в сводной таблице другой связи «многие ко многим» в Laravel 11.Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Получите связь «один ко многим» в сводной таблице другой связи «многие ко многим» в Laravel 11.

Сообщение Anonymous »

У меня есть модели Place, User со связью многие-ко-многим в качестве сводной таблицы/модели с именем Reservation, мне нужно было создать новую связь между сводной таблицей и другой таблица с именем резервирование_статусы, чтобы связать каждое бронирование с его статусом, и новую связь между резервированием_статусов и резервированием_статус_переводов для хранения статуса резервирования на нескольких языках.
Теперь мне нужно получить все бронирования пользователей, вошедших в систему, со статусом резервирования и его переводом. Вот структура моих моделей/таблиц:

Код: Выделить всё

class Place extends Model
{
use HasFactory, SoftDeletes;

public function users()
{
return $this->belongsToMany(User::class, 'reservations')
->withPivot(['id', 'reservation_number', 'reservation_status_id'])
->as('reservations')
->withTimestamps();
}
}

Код: Выделить всё

class User extends Authenticatable
{
use HasFactory, HasApiTokens, Notifiable, SoftDeletes, HasRoles;

public function places()
{
return $this->belongsToMany(Place::class, 'reservations')
->withPivot(['id', 'reservation_number', 'reservation_status_id'])
->as('reservations')
->withTimestamps();
}
}

Код: Выделить всё

class Reservation extends Pivot
{
use HasFactory, SoftDeletes;

protected $table = 'reservations';

protected $fillable = [
'user_id',
'place_id',
'reservation_status_id'
];

public function reservationStatus()
{
return $this->belongsTo(ReservationStatus::class);
}
}

Код: Выделить всё

class ReservationStatus extends Model
{
public function reservations()
{
return $this->hasMany(Reservation::class);
}

public function reservationStatusTranslations()
{
return $this->hasMany(ReservationStatusTranslation::class);
}
}

Код: Выделить всё

class ReservationStatusTranslation extends Model
{
use HasFactory;

protected $fillable = [
'name',
'reservation_status_id',
'language_id',
];

public function reservationStatus()
{
return $this->belongsTo(ReservationStatus::class);
}

public function language()
{
return $this->belongsTo(Language::class);
}
}
А вот когда я пытаюсь получить резервирования аутентифицированного пользователя:

Код: Выделить всё

public function index()
{
$user = request()->user();
$reservations = $user->places()->get(['places.id', 'name']);
return $this->sendResponse(__('general.list_all_reservations'), $reservations);
}
и вот что я получаю:

Код: Выделить всё

{
"success": true,
"message": "List all reservations",
"data": [
{
"id": 1,
"name": "farm",
"reservations": {
"user_id": 151,
"place_id": 1,
"id": 122,
"reservation_number": "772-826-152",
"reservation_status_id": 4, // here I need the reservation status relationship and then access the reservation status translation relationship
"created_at": "2024-06-25T19:23:16.000000Z",
"updated_at": "2024-06-25T19:23:54.000000Z"
}
}
]
}
Любая помощь приветствуется...

Подробнее здесь: https://stackoverflow.com/questions/786 ... y-relation
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»