Как получить все экземпляры одного объекта в отношениях «многие ко многим» в Laravel? - PullRequest
2 голосов
/ 12 марта 2019

У меня есть две таблицы, которые связаны друг с другом в отношениях многих ко многим.Я установил запросы с помощью методов $ this-> serveToMany () с обеих сторон.

Одна таблица называется Устройство , другая - Pos .Я хочу получить доступ ко всем экземплярам Device, связанным с этим Pos в промежуточной таблице, используя Eloquent.

Это модель устройства:

public function pos()
    {
        return $this->belongsToMany('App\Pos', 'devices_pos')->withTimestamps();
    }

Это модель Pos:

public function devices()
    {
        return $this->belongsToMany('App\Device', 'devices_pos')->withTimestamps();
    }

Я не хочу делать запрос БД прямо к таблице «devices_pos».Я хотел бы сделать это красноречивым способом.

Ответы [ 2 ]

4 голосов
/ 12 марта 2019

Вы можете получить доступ ко всем устройствам из 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

1 голос
/ 12 марта 2019

Используйте атрибут pivot для доступа к промежуточной таблице после обращения к взаимосвязи

$pos = Pos::find($id);

foreach ($pos->devices as $device) {
    echo $device->pivot->created_at; //returns created_at on the intermedite table 'devices_pos'
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...