Реверс содержит () в laravel? - PullRequest
0 голосов
/ 09 мая 2019

Я новичок в Laravel, Я пытаюсь получить строку из таблицы в соответствии с отношением «многие ко многим» с другой таблицей.

Вы знаете, когда вы передаете несколько идентификаторов в contain(), чтобы проверить, имеют ли они отношение к этой строке или нет, например:

$row->contains([4,6,9]);

Я хочу изменить это, где я могу использовать идентификаторы [4,6,9], чтобы получить любую строку из другой таблицы, связанной с ними.

1 Ответ

0 голосов
/ 09 мая 2019

Допустим, у вас есть две эти модели: User и Role, которые устанавливают отношения многие ко многим.

Если вы правильно определили свои отношения:

/** User.php */

public function roles()
{
    return $this->belongsToMany(Role::class);
}

-

/** Role.php */

public function users()
{
    return $this->belongsToMany(User::class);
}

Тогда вы можете использовать отношения, чтобы выполнить то, что вы пытаетесь сделать.

от связанного объекта:

$user = User::find(1);

// getting all the roles attached with a user:
$roles = $user->roles;

// getting all the roles attached with a user that has certain ids:
$roles = $user->roles()->whereIn('id', [2, 4, 6])->get();

Кроме того, вы можете найти желаемую связанную модель, используя экземпляр коллекции, который возвращает отношение:

$user = User::find(1);

// getting all the roles attached with a user:
$roles = $user->roles;

// getting a specific role attached to a user:
$specific_role = $roles->where('id', 6)->first();
...