【问题标题】:Laravel 6. Get all users who don't have contacts in one to many relationshipLaravel 6. 以一对多关系获取所有没有联系人的用户
【发布时间】:2020-04-20 16:27:35
【问题描述】:

我正在尝试获取所有没有联系人的用户。让我们说

我的用户模型

public function contacts(){
    return $this->hasMany(Contacts::class);
}

我的联系人模型

public function user()
{
    return $this->belongsTo(User::class);
}

预期结果: 获取所有还没有联系人的用户。例如,如果 7 个用户中有 4 个在联系人表中有联系人,而我想要其余 3 个用户(在联系人表中没有条目)

我尝试了下面的代码,但它返回了所有用户,而不仅仅是没有联系人的用户

DB::table('users')
            ->select(
                'users.id',
                'users.*'
            )
            ->leftjoin('contacts','contacts.user_id','=','users.id')
            ->whereNull('contacts.user_id')
            ->get();  

我的英文不好,语法错误请见谅。

【问题讨论】:

    标签: mysql laravel eloquent laravel-6


    【解决方案1】:

    你应该使用关系缺失

    use App\User;
    
    $noContacts = User::doesntHave('contacts')->get();
    

    https://laravel.com/docs/6.x/eloquent-relationships#querying-relationship-absence

    【讨论】:

    • 感谢您的回答。让我试试
    猜你喜欢
    • 1970-01-01
    • 2011-05-19
    • 1970-01-01
    • 2012-09-15
    • 1970-01-01
    • 2020-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多