Php Laravel雄辩模型获得唯一用户
我有一张桌子,叫做“共享”: 这是“用户”表: 因此,我通过“共享”模型和与每个条目关联的用户获得共享项列表:Php Laravel雄辩模型获得唯一用户,php,mysql,laravel,model,Php,Mysql,Laravel,Model,我有一张桌子,叫做“共享”: 这是“用户”表: 因此,我通过“共享”模型和与每个条目关联的用户获得共享项列表: class Share extends Model { public function UserDetail() { return $this->belongsTo('App\User', 'user_id', 'id'); } } 我需要的是返回具有parent\u id3的用户: $user = Share::where('par
class Share extends Model
{
public function UserDetail()
{
return $this->belongsTo('App\User', 'user_id', 'id');
}
}
我需要的是返回具有parent\u id
3的用户:
$user = Share::where('parent_id', '=', 3)->paginate(15);
它返回所有内容,但我只需要返回以下唯一用户:
谢谢你的帮助 您可以使用
groupBy
方法获取唯一用户。请参阅此链接
希望回答了您的问题。根据您的评论,您希望以类似的
家长id购买所有股份(3):
以及他们的用户。每个共享都属于一个用户。但是每个用户可以共享很多次,但只想占用用户一次。我们可以做
//Using eloquent
$users = Share::where('parent_id', 3)
->join('users', 'users.id', '=', 'shares.user_id')
->select('users.id', 'users.email', 'users.first_name', 'users.last_name')
->groupBy('users.id', 'users.email', 'users.first_name', 'users.last_name')
->get();
//using Query builder
$users = DB::table('shares')
->join('users', 'users.id', '=', 'shares.user_id')
->where('shares.parent_id', 3)
->select('users.id', 'users.email', 'users.first_name', 'users.last_name')
->groupBy('users.id', 'users.email', 'users.first_name', 'users.last_name')
->get();
这将为您提供一个清晰的用户列表,其中共享了父\u id=3
它不起作用。我尝试了此操作,但它出现了以下错误:SQLSTATE[42000]:语法错误或访问冲突:1055“app\u db.share.id”不在分组依据中(SQL:select*from
share`whereparent\u id
=3 GROUP BYemail
限制15偏移量0)`@Martian.titan将其更改为user\u id
我已经添加了代码,还尝试了groupBy('email')
,但不幸的是仍然存在相同的错误。非常感谢您的跟进和支持helping@Martian.titan再试一次。我认为这个应该没问题。从共享中选择*,其中父项\u id=3按项目分组\u id限制15偏移0)
请不要给负面评分。这只是我的问题。请再解释一下你想做什么。你想获得一个共享
并获取该共享的用户吗?@eddystedove是的,没错。我需要从共享表中获取用户列表。所以我可以显示我有多少用户。那么你只是想显示每个项目被共享了多少次?或者您正试图查看数据库中有多少用户?@eddysedove我需要显示我在数据库中与多少用户共享了该项目。所以在共享表上,我有parent_id,我需要获取与共享表的parent_id关联的所有用户。不幸的是,它不能正常工作。它只是返回父\u id 3详细信息,而不是用户详细信息。
$shares = Share::where('parent_id', 3)->get();
//Using eloquent
$users = Share::where('parent_id', 3)
->join('users', 'users.id', '=', 'shares.user_id')
->select('users.id', 'users.email', 'users.first_name', 'users.last_name')
->groupBy('users.id', 'users.email', 'users.first_name', 'users.last_name')
->get();
//using Query builder
$users = DB::table('shares')
->join('users', 'users.id', '=', 'shares.user_id')
->where('shares.parent_id', 3)
->select('users.id', 'users.email', 'users.first_name', 'users.last_name')
->groupBy('users.id', 'users.email', 'users.first_name', 'users.last_name')
->get();