我的查询需要帮助。我使用了带有高级连接子句的多个表,但是它显示了无效的计数,并且都具有相同的值:
$parents = DB::table('users')
->select('users.id','users.full_name', 'users.email', 'users.avatar', 'users.signup_date', (DB::raw('count(children.id) as children_no')), (DB::raw('count(invitations.id) as invitations_no')))
->leftJoin('children', function ($join) {
$join->on('users.id', '=', 'children.userid')
->where('children.is_deleted', '=', 0);
})
->leftJoin('invitations', function ($join) {
$join->on('users.id', '=', 'invitations.user_id')
->where('invitations.is_deleted', '=', 0);
})
->where('users.is_admin', '=', 0)
->groupBy('users.id')
->get();
答案 0 :(得分:0)
我认为您可以通过Laravel中的基本关系+邀请和子表格中的软删除来解决此问题。
这将使您的查询复杂度降低,并获得Laravel的好处。
<?php
$users = User::where('is_admin', false)
->has(['invitations', 'children'])
->withCount(['invitations', 'children'])
->get();
这将不选择所有带邀请和子级的管理员。 确保在子级和邀请上具有软删除设置。 withCount将为相关关系添加一个计数。