Laravel-在同一页面上显示活动和非活动

Laravel-在同一页面上显示活动和非活动,laravel,Laravel,我有一个包含以下字段的表:name和plan\u status 计划状态可以是0或11处于活动状态,0处于非活动状态。我想显示| name | active | inactive | 我只能运行显示活动和非活动的查询 型号: protected $fillable = [ 'name', 'plan_status' ]; 控制器: $actives = DB::table('users') ->select(DB::raw('count(*) as active'))

我有一个包含以下字段的表:
name
plan\u status

计划状态可以是
0
1
<代码>1处于活动状态,
0
处于非活动状态。我想显示
| name | active | inactive |

我只能运行显示活动和非活动的查询

型号:

protected $fillable = [
    'name', 'plan_status'
];
控制器:

$actives = DB::table('users')
    ->select(DB::raw('count(*) as active'))
    ->where('plan_status', 1)

我希望查询同时显示活动和非活动名称:
| name | active | inactive |

以下是查询,它将为您提供所需的确切结果

$actives = DB::table('users')
                     ->selectRaw('
                            name,  
                            IF((plan_status = 1), "Yes", "No") as active, 
                            IF((plan_status = 0), "Yes", "No") as inactive,
                            IF((plan_status = 2), "Yes", "No") as undefined
                     ')
                     ->get()
试试这个,检查一下。我想这会解决你的问题

已编辑

获取状态信息的计数

$actives = DB::table('users')
                         ->selectRaw('
                                name,  
                                IF((plan_status = 1), COUNT(*), "0") as active, 
                                IF((plan_status = 0), COUNT(*), "0") as inactive,
                                IF((plan_status = 2), COUNT(*), "0") as undefined
                         ')
                         ->groupBy('plan_status')
                         ->get()
像这样


尝试两种解决方案。

这是一个查询,它将为您提供您想要的确切结果

$actives = DB::table('users')
                     ->selectRaw('
                            name,  
                            IF((plan_status = 1), "Yes", "No") as active, 
                            IF((plan_status = 0), "Yes", "No") as inactive,
                            IF((plan_status = 2), "Yes", "No") as undefined
                     ')
                     ->get()
试试这个,检查一下。我想这会解决你的问题

已编辑

获取状态信息的计数

$actives = DB::table('users')
                         ->selectRaw('
                                name,  
                                IF((plan_status = 1), COUNT(*), "0") as active, 
                                IF((plan_status = 0), COUNT(*), "0") as inactive,
                                IF((plan_status = 2), COUNT(*), "0") as undefined
                         ')
                         ->groupBy('plan_status')
                         ->get()
像这样


尝试这两种解决方案。

使用分组方式尝试这一种

 DB::table('users')
        ->select('name',
             DB::raw('IF((plan_status = 1), count(*), 0) as active'),
             DB::raw('IF((plan_status = 0), count(*), 0) as inactive'),
         )->groupBy('plan_status')->get()

使用“分组方式”尝试此选项

 DB::table('users')
        ->select('name',
             DB::raw('IF((plan_status = 1), count(*), 0) as active'),
             DB::raw('IF((plan_status = 0), count(*), 0) as inactive'),
         )->groupBy('plan_status')->get()


如果你想要全部的话,你不需要where子句。如果一个计划是活动的或非活动的,那就意味着你想要全部。我不明白。您想在一个表中同时显示
活动
非活动
列的所有项目,还是只想根据项目的
计划状态对项目进行计数
?您只需在返回后创建一个新数组,然后执行$actives['inactive']=$actives['active']?假:真;将显示3列。第一列是名称。然后,如果计划状态为1,则第二列将显示为活动,如果计划状态为0,则第二列将显示为非活动。我不想将计划状态的活动和非活动都放在同一列上。我想把它们分开。感谢首先:“如果计划状态为1,则第二列将显示为活动,如果计划状态为0,则第二列将显示为非活动”,然后:“*我不想将计划状态的活动和非活动都放在同一列上。*”——仍然不确定。如果您想要全部的话,您不需要where子句。如果一个计划是活动的或非活动的,那就意味着你想要全部。我不明白。您想在一个表中同时显示
活动
非活动
列的所有项目,还是只想根据项目的
计划状态对项目进行计数
?您只需在返回后创建一个新数组,然后执行$actives['inactive']=$actives['active']?假:真;将显示3列。第一列是名称。然后,如果计划状态为1,则第二列将显示为活动,如果计划状态为0,则第二列将显示为非活动。我不想将计划状态的活动和非活动都放在同一列上。我想把它们分开。感谢首先:“如果计划状态为1,则第二列将显示为活动,如果计划状态为0,则第二列将显示为非活动”,然后:“*我不想将计划状态的活动和非活动都放在同一列上。*”——仍然不确定。很抱歉,计划状态有2表示未定义。:活动、非活动、未定义您的意思是在
计划状态中有三种类型的值
=>0、1、null。对吗?并且您希望在0计划_状态下计算空值。对吗?不,我的计划状态=>0,1,2。0处于非活动状态,1处于活动状态,2未定义。它将每个列作为一列显示在同一个表上,如果我想删除属性名,并且只有一行和两列:active | InactiveVeam抱歉,plan_status有2个表示未定义。注意:active,inactive,Undefinedy您的意思是在
plan_status
=>0,1,null中有三种类型的值。对吗?并且您希望在0计划_状态下计算空值。对吗?不,我的计划状态=>0,1,2。0处于非活动状态,1处于活动状态,2未定义。它会将每个列作为一列显示在同一个表上,如果我想删除属性名称,并且只有一行和两列:活动|不活动我需要计算每个计划状态我需要计算每个计划状态