---
title: "whereBelongsTo() - чисті запити по зв'язках"
url: https://laravelukraine.com/blog/wherebelongsto-cisti-zapiti-po-zviazkax
date: 2026-07-24
---

# whereBelongsTo() - чисті запити по зв'язках

Фільтруєте за зв'язком через `where('user_id', $user->id)`? Можна краще.

`whereBelongsTo()` сам підставляє зовнішній ключ.

**Переваги:**

* Не треба пам'ятати назву foreign key
* Працює з кастомним ключем
* Краще читається
* Безпечніше при рефакторингу

Бонус: працює з масивом моделей.

Порада: дуже зручно в policy-методах, де фільтруєте по `auth()->user()`.

```php
// ПОГАНО: ручний foreign key
$posts = Post::where('user_id', $user->id)->get();
$comments = Comment::where('post_id', $post->id)->get();

// ДОБРЕ: Laravel сам визначає ключ
$posts = Post::whereBelongsTo($user)->get();
$comments = Comment::whereBelongsTo($post)->get();

// Кілька зв'язків
$comments = Comment::whereBelongsTo($user)
  ->whereBelongsTo($post)
  ->get();

// Кастомна назва зв'язку
$posts = Post::whereBelongsTo($user, 'author')->get();

// У policy - максимально чисто
public function update(User $user, Post $post)
{
  return Post::whereBelongsTo($user)->exists();
}
```
