Php 加入数据库并计数
我试着列出关于一个表的信息,其中一个信息是一个用户有多少辆车。我有两个数据库,一个是Php 加入数据库并计数,php,mysql,laravel,laravel-4,eloquent,Php,Mysql,Laravel,Laravel 4,Eloquent,我试着列出关于一个表的信息,其中一个信息是一个用户有多少辆车。我有两个数据库,一个是用户,另一个是汽车。表cars中有一列是owner,该列保存所有者的id。我想知道的是:如何列出所有用户以及每个用户拥有的汽车总数 $users = Users::all(); 这段代码返回一个包含所有用户的数组,我想要传递的是每个用户在同一$users变量上拥有的汽车总数。我该怎么做?有没有一种方法可以加入另一个表,计数然后返回,或者类似的方法 @编辑 我试过这样做,但不起作用: $users = Users
用户
,另一个是汽车
。表cars
中有一列是owner
,该列保存所有者的id
。我想知道的是:如何列出所有用户以及每个用户拥有的汽车总数
$users = Users::all();
这段代码返回一个包含所有用户的数组,我想要传递的是每个用户在同一$users
变量上拥有的汽车总数。我该怎么做?有没有一种方法可以加入另一个表,计数然后返回,或者类似的方法
@编辑
我试过这样做,但不起作用:
$users = Users::join('cars', 'cars.owner', '=', 'users.id')->select(DB::raw('count(cars.car_id) as total'))->get();
您需要按状态分组。请执行以下操作:
select users.name, count(*) as counter from users
join cars on ... group by users.name;
好的,这里有更详细的内容:
您必须将users表与cars表连接起来。你这样做,是的
然后,您必须从用户表中选择一个col和一个count(*)作为计数器
现在的诀窍是,根据用户表中的列“分组”。将所有双用户行与一行匹配,并计算一个用户拥有多少车
select语句是:
“选择users.id,count(*)作为计数器,从用户加入车上的车。所有者=users.id按用户分组。id”
就这些。。。希望对您有所帮助您需要的国家小组:
select users.name, count(*) as counter from users
join cars on ... group by users.name;
好的,这里有更详细的内容:
您必须将users表与cars表连接起来。你这样做,是的
然后,您必须从用户表中选择一个col和一个count(*)作为计数器
现在的诀窍是,根据用户表中的列“分组”。将所有双用户行与一行匹配,并计算一个用户拥有多少车
select语句是:
“选择users.id,count(*)作为计数器,从用户加入车上的车。所有者=users.id按用户分组。id”
就这些。。。希望能对你有所帮助我想这会对你有所帮助
Users::with([
'cars' => function($q){
$q->select([DB::raw("count(car_id) as total"), "car_id"])
->groupBy('car_id');
}
])->get();
我想这会帮助你
Users::with([
'cars' => function($q){
$q->select([DB::raw("count(car_id) as total"), "car_id"])
->groupBy('car_id');
}
])->get();
您可以在raw中尝试此SQL查询。我试过了,效果很好
SELECT users.name as User_Name, COUNT(cars.user_id) as Car_Count
FROM users
LEFT JOIN cars
ON users.id=cars.user_id
GROUP BY users.id
您可以在raw中尝试此SQL查询。我试过了,效果很好
SELECT users.name as User_Name, COUNT(cars.user_id) as Car_Count
FROM users
LEFT JOIN cars
ON users.id=cars.user_id
GROUP BY users.id
但是
->count()
仅用于单个查询,我想了解每个用户。您是否有数据透视表设置?数据透视表设置的含义是什么?您是否尝试在视图中显示它们?(刀片)。我可以告诉你确切的语法。是的,我是。您的解决方案是什么?但是->count()
仅用于单个查询,我想了解每个用户。您是否有数据透视表设置?数据透视表设置的含义是什么?您是否尝试在视图中显示它们?(刀片)。我可以告诉你确切的语法。是的,我是。你的解决方案是什么?@mralminty。看看@AliGajani-我会试试这个。Thanks@Tobi-$users=users::select(DB::raw('count(*)as counter'))->join('cars','cars.owner','=','user.id')->groupBy('users.id')->get()代码>-我尝试了这种方法,它只返回“counter”,我还需要其他列。我修复了这种方法:$users=users::select('*',DB::raw('count(*)as counter'))->join('cars','cars.owner','=','user.id')->groupBy('users.id')->get()代码>我现在有另一个问题。。。我需要知道有多少地方根据当前汽车的id销售这些汽车。我试过这样做:$users=users::select('*',DB::raw('count(*)as counter'))->join('cars','cars.owner','=','user.id')->join('places','places.car','=','cars.id')->groupBy('users.id')->get()代码>-它总是只返回1
。@mralMight。看看@AliGajani-我会试试这个。Thanks@Tobi-$users=users::select(DB::raw('count(*)as counter'))->join('cars','cars.owner','=','user.id')->groupBy('users.id')->get()代码>-我尝试了这种方法,它只返回“counter”,我还需要其他列。我修复了这种方法:$users=users::select('*',DB::raw('count(*)as counter'))->join('cars','cars.owner','=','user.id')->groupBy('users.id')->get()代码>我现在有另一个问题。。。我需要知道有多少地方根据当前汽车的id销售这些汽车。我试过这样做:$users=users::select('*',DB::raw('count(*)as counter'))->join('cars','cars.owner','=','user.id')->join('places','places.car','=','cars.id')->groupBy('users.id')->get()代码>-并且它始终只返回1
。这是一个已经制作好的,但是现在如何知道用户拥有的汽车的销量查看聊天(你在那里)-Tobi发布了一个查询,我在尝试转换成雄辩的时候真的很头疼。这是我做的,但是现在如何知道用户拥有的汽车的销量查看聊天(你在那里)-Tobi发布了一个查询,我在尝试转换为雄辩时感到非常头痛。是的,它有效,我知道,但我还有另一个问题:现在我在同一个查询中知道用户在多少地方卖车。例如,用户“John Stacey”有3辆车,假设每辆车都有一个品牌,每辆车在一个地方销售,那么我们有3个地方销售。差不多是这样。列表必须是这样的:用户X有N辆车在N个地方销售。是的,它是有效的,我知道,但我有另一个问题,那就是:现在我在同一个查询中知道有多少地方销售用户的车。例如,用户“John Stacey”有3辆车,假设每辆车都有一个品牌,每辆车在一个地方销售,那么我们有3个地方销售。差不多是这样。清单必须是这样的:用户X有N辆车在N个地方销售。