如何获得Laravel中非关键列字段的不同值?

这可能很容易,但不知道如何。

我有一个表可以有一个特定的非关键列字段的重复值。 如何使用查询生成器或Eloquent编写SQL查询,该查询将为该列提取具有不同值的行?

请注意,我不只是获取该列,它是与其他列值,所以distinct()可能不会真的工作。 所以这个问题基本上可以是如何指定我想要在查询中distinct()的列现在distinct()接受任何参数?

你应该使用groupby 。 在查询生成器中,您可以这样做:

 $users = DB::table('users') ->select('id','name', 'email') ->groupBy('name') ->get(); 

在Eloquent中,你也可以这样查询:

$users = User::select('name')->distinct()->get();

在雄辩中你可以使用这个

 $users = User::select('name')->groupBy('name')->get()->toArray() ; 

groupBy实际上是获取不同的值,实际上groupBy将对相同的值进行分类,以便我们可以对它们使用聚合函数。 但在这种情况下,我们没有聚合函数,我们只是select将导致结果具有不同值的值

请注意, groupBy使用的groupBy不适用于postgres。

使用distinct的可能是一个更好的select – 例如$users = User::query()->distinct()->get();

如果您使用query ,则可以根据请求select所有列。

虽然我迟迟不回答这个问题,但用一个更好的方法来获得不同的logging

 $user_names = User::distinct()->get(['name']);