如何获得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']);