Laravel与递归用户表的关系很多

时间:2020-06-23 02:00:47

标签: php laravel eloquent

我有两个表用户和付款

用户表如下:

id
fisrtname
lastname

付款表如下:

id
users_id
receiver_id

注意:用户表也是接收者表。

我想要列出已付款但未收到任何付款的用户列表

1 个答案:

答案 0 :(得分:1)

请尝试我的解决方案:


class User extends Authenticatable {
    ...
    public function payments()
    {
        return $this->hasMany(Payment::class, 'users_id');
    }
}
$users = \App\User::query()->getModel();
$users = $users->whereHas('payments', function ($query) {
    /** @var Builder $query */
    $query->havingRaw('COUNT(*) = 1');
})->whereNotExists(function ($query) {
    /** @var Builder $query */
    $query->select(['receiver_id'])
      ->from('payments')
      ->whereRaw('users.id = payments.receiver_id');
})->get();