Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel雄辩模型获得唯一用户_Php_Mysql_Laravel_Model - Fatal编程技术网

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`where
parent\u id
=3 GROUP BY
email
限制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();