#laravel #eloquent
#laravel #красноречивый
Вопрос:
У меня есть две таблицы, которые связаны друг с другом отношением «многие ко многим». Я установил запросы с помощью методов $this-> belongsToMany() с обеих сторон.
Одна таблица называется Device, другая — Pos. Я хочу получить доступ ко всем экземплярам устройства, связанным с этим Pos, в промежуточной таблице, используя Eloquent.
Это модель устройства:
public function pos()
{
return $this->belongsToMany('AppPos', 'devices_pos')->withTimestamps();
}
Это модель Pos:
public function devices()
{
return $this->belongsToMany('AppDevice', 'devices_pos')->withTimestamps();
}
Я не хочу отправлять запрос к БД прямо в таблицу ‘devices_pos’. Я хотел бы сделать это красноречивым способом.
Комментарии:
1. Вы хотите получить доступ к промежуточной таблице? Посмотрите здесь: laravel.com/docs/5.8 /…
Ответ №1:
Вы могли бы получить доступ ко всем устройствам из Pos, используя отношение:
$pos = Pos::find($id);
$pos->devices; // this will return all the devices from that pos
И вы могли бы выполнить цикл для доступа к каждому атрибуту с каждого устройства:
foreach($pos->devices as $device)
{
echo $device->anyDeviceAttribute;
}
Для получения дополнительной информации: Docs
Ответ №2:
Используйте атрибут pivot для доступа к промежуточной таблице после доступа к связи
$pos = Pos::find($id);
foreach ($pos->devices as $device) {
echo $device->pivot->created_at; //returns created_at on the intermedite table 'devices_pos'
}