@procode
Разработчик

Laravel, как отфильтровать записи имеющие отношения многие-ко-многим при пагинации?

Здравствуйте. Уже часа два бьюсь :(

Есть отношения многие-ко-многим (belongsToMany), записи в pivot-таблицу происходят нормально.

Теперь мне нужно при выводе списка записей через paginate() отфильтровать те, у которых есть отношение с текущим залогиненным пользователем (я хочу пометить их во вьюхе особым образом, они там выводятся списком).

Объект пользователя я получить могу. У есть и доступ к свойствам записей. Но все мои условия почему-то не срабатывают. Я уже и всякие get() и where() и чего я только не пробовал..

Как это вообще можно сделать через Eloquent?

Спасибо.

PS.

$pages = Page::paginate(5); //
			
			foreach($pages as $page){ 
				
				$danger_or_success[$page->id]['state'] = 'danger';
				$danger_or_success[$page->id]['text'] = 'On';
				
	
				if(true) { // что мне сюда вместо true написать, чтобы оно было верно только для $page имеющих отношение к текущему User::find(1) 
					
					$danger_or_success[$page->id]['state'] = 'success';
					$danger_or_success[$page->id]['text'] = 'Off';
				}
				
}
  • Вопрос задан
  • 376 просмотров
Решения вопроса 1
@procode Автор вопроса
Разработчик
!!! через много времени гугления я нашел таки ответ над которым бились лучшие умы человечества!))

выглядит он примерно так:

$client = Client::find(1);
$exists = $client->products->contains($product_id);


отсюда: https://stackoverflow.com/questions/24555697/check...

у меня работает. всем спасибо!
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@NubasLol
Как быстрый вариант

::withCount(['users' => function ($query) {
    $query->where('id', auth()->id());
}]);


Потом в шаблоне будешь смотреть не 0 ли количество это
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы