Laravel-从视图到控制器传递字符串参数

时间:2019-05-28 09:47:47

标签: laravel

我有这些表:

#0

我的问题是在用户表中,计划是整数(1 =每天,2 =每周,3 =每月),而在帐单表中,计划是varchar(每天,每周,每月)。我创建了计费控制器并使用Billings模型查看。我想把两个领域联系起来。

这是创建帐单的有效代码:

控制器

users (User): username,plan
billings: (Billings): email,amount,plan

报告/usersBilling.blade.php

public function usersBilling()
{
    $billings = DB::table("billings")
        ->select("billings.plan", DB::raw("COUNT(billings.plan) as total_plans") ,DB::raw("SUM(billings.amount) as total_amount"))
        ->join("users","users.email","=","billings.email")
        ->groupBy("billings.plan")
        ->orderByRaw('billings.plan ASC')
        ->paginate(15);

    return view('report.usersBilling', compact('billings'));        
}  

这是我要完成的控制器

<td><a href="{{ route('report.showBillingDetail',$billing->plan) }}">{{ $billing->plan }}</a></td>               
<td>{{ $billing->total_plans }}</td>
<td>{{ $billing->total_amount }}</td>

我想完成这个。

当我通过以下链接单击计划时:

public function showBillingDetail(Request $request,$billingtype)
{
    $user= User::findOrFail($billingtype);

    return view('report.showBillingDetail', compact('user'));
}

它应该显示具有该计划的所有用户。由于用户表中的计划是整数(1,2,3),计费中的计划是varchar(每日,每周,每月),我该如何在UserController中编写查询,该查询将从计费视图中接收计划参数并将其相关在用户表中使用计划,然后根据参数在用户表中选择所有字段。 href="{{ route('report.showBillingDetail',$billing->plan) }}" 1=daily2=weekly

1 个答案:

答案 0 :(得分:0)

理想情况下,您必须使用Eloquent Model来查询数据库。它将为您提供管理此类案件的灵活性。

但是,如果您更喜欢DB::table(),则可以再添加一个选择字段,以标识您的计划,例如dailyweeklymonthly

public function usersBilling()
{
    $billings = DB::table("billings")
        ->select("billings.plan", DB::raw("COUNT(billings.plan) as total_plans") ,DB::raw("SUM(billings.amount) as total_amount", DB::raw("IF(billings.plan == 1), 'daily", IF(billings.plan == 2), 'weekly', 'monthly')))
        ->join("users","users.email","=","billings.email")
        ->groupBy("billings.plan")
        ->orderByRaw('billings.plan ASC')
        ->paginate(15);

    return view('report.usersBilling', compact('billings'));        
}

我认为这会对您有所帮助。