Получите пользователей, у которых есть одно сообщение, только с одним сообщением - PullRequest
2 голосов
/ 21 июня 2020

Как я могу изменить это, чтобы получить только одно сообщение на пользователя:

User::has('posts')->with('posts')->get()

$users = User::has('posts')->with(['posts', function ($query) {
    $query->first(); //->take(1)
}])->get()

Это вызывает ошибку:

" Illuminate / Database / Eloquent / RelationNotFoundException с сообщением 'Вызов неопределенного отношения [] в модели [Приложение / Модель / Пользователь]."

Используется пользователь hasMany Posts.

Ответы [ 2 ]

0 голосов
/ 22 июня 2020

Можете попробовать:

$users = User::whereHas('posts', function ($query) {
    $query->havingRaw('COUNT(*) = 1');
})->with('posts')->get();
0 голосов
/ 21 июня 2020

В вашей модели могут быть отношения post и posts. Таким образом вы можете запросить одно или несколько отношений без дополнительных действий.

class User
{
    // Add this instead.
    public function post()
    {

    }

    public function posts()
    {

    }
}
...