Laravel как получить только данные отношения - PullRequest
0 голосов
/ 07 августа 2020

это мой пользователь. php код отношения

    public function activities()
    {
        return $this->hasMany(Activities::class, 'builder');
    }

и это мой запрос для получения только данных отношения

return User::whereHas('activities', fn($query) => $query->where('user_id', 1))
            ->paginate();

, но он возвращает только данные пользователя без применения каких-либо отношение, и его разбивка на страницы не может использоваться pluck

Я также пробовал это

User::where('username', request()->username)->has('activities')->paginate();

, но мне нужно только получить данные отношения, а не пользователя с отношением, и я предпочитаю делать это с whereHas

1 Ответ

1 голос
/ 07 августа 2020

Вам необходимо создать обратную связь для модели Activities:

class Activities extends Model
{
    // ...
    public function user(): BelongsTo
    {
        return $this->belongsTo(User::class, 'user_id');
    }
}

И получить все действия с помощью конструктора действий:

$paginated = Acitivities::query()
    ->whereHas('user', static function(Builder $userQuery) {
        $userQuery->where('name', request()->username); // Think about security!
    })
    ->paginate();

Примечание: все модели должны быть названы в единственном числе (например, Действие, Пользователь, Продукт и т. д. c.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...