【问题标题】:Display payment status of users in Laravel with MySQL在 Laravel 中使用 MySQL 显示用户的付款状态
【发布时间】:2019-08-01 15:31:52
【问题描述】:

我想按月显示用户付款状态。我正在尝试,但我没有任何想法来实现这一点。

我有两张桌子:

  1. 用户表(ID、用户名、更新时间、创建时间)
  2. 付款表(ID、user_id、付款状态、付款)

我正在尝试使用查询来实现以下场景:

Select * from users where updated_at=**selectmonth**

但我没有得到我想要的结果。

假设管理员选择月份 2019 年 8 月,然后显示所有用户的付款状态和 8 月日期,例如:

| 姓名 | 付款状态 | 付款日期


| ABC | 完成 | 01-08-2019

| XYZ | 未完成 | 02-08-2019

如果管理员从下拉列表中选择 2019 年 4 月,然后像上面一样显示 4 月份的用户详细信息。

在表格中添加了静态数据。我想做那样的东西。

请建议我如何显示用户记录?

【问题讨论】:

  • 您是否遇到了特定的问题?
  • 您能提供更多信息吗?例如,发布您的两个表的数据库结构,并发布您尝试过的 SQL 语句以获得更好的帮助质量。我们不是通灵者
  • 你应该发布你的进度,不仅仅是你的数据库结构,这就是stackoverflow的工作原理

标签: php mysql laravel


【解决方案1】:

你可以这样做:下面是 png 格式的表格结构。付款状态默认值为0。当记录进入表格时,它变为1。这里0代表未完成。 1 代表完成。

在您的控制器中,执行以下操作:

public function showPaymentDetails(Request $request)
    {
        $dateInput=$request->input(dateselect);

        $data['users']=DB::table('user_table')
        ->leftjoin('payment_table','user_table.idusertable','=','payment_table.user_table_idusertable')
        ->orderby('user_table.idusertable','desc')
        ->where('payment_table.paymentDate','=',$dateInput)
        ->get();
        return view('usersform',$data);
    }

然后在您的刀片中,您可以显示记录。你可以在你的刀片上做一些逻辑来显示完成/未完成:

<div class="table-responsive col-md-12">
                                          <table id="mytable" class="table table-bordered table-striped table-highlight">
                                            <thead>
                                              <tr bgcolor="#c7c7c7">
                                                <th>S/N</th>
                                                <th>UserName</th>
                                                <th>Phone</th>
                                                <th>Location</th>
                                                <th>Email</th>
                                                <th>PaymentDate</th>
                                                <th>Payment Status</th>

                                              </tr>
                                            </thead>

                                            <tbody>

                                              @php
                                              $i=1;
                                              @endphp
                                                @foreach($users as $list)

                                                   <tr>
                                                   <td>{{ $i++ }}</td>

                                                   <td>{{ $list->fullname}}</td>
                                                   <td>{{ $list->phone}}</td>
                                                   <td>{{ $list->location}}</td>
                                                   <td>{{ $list->email}}</td>
                                                   <td>{{ $list->paymentDate}}</td>
                                                   <td> @if($list->paymentDate==0){{ 'Not Done' }} @elsif($list->paymentStatus==1) {{ 'Done' }} @endif</td>
                                                   </tr>
                                               @endforeach
                                                </tbody>

                                          </table>
                                           <hr />


                                        </div>

//你的路线

Route::Post('/display-payment-details',   'YourController@showPaymentDetails');

【讨论】:

  • 感谢您的意见。我正在尝试您的解决方案。成功后我会通知您。
  • 也知道我为这两个表创建了关系以便于查询
【解决方案2】:

如果用户和付款通过数据库中的外键连接(请参阅Laravel's documentation 关于关系),您可以通过多种方式实现此目的。我将专注于检索结果的代码,因为我们没有关于确切场景的详细信息:

示例 1 如果您处于以用户为中心的环境中,给定 payments 一对多关系:

// You can perform this or more specific queries
User::with( 'payments' )->get();
// this will return all the users, with an additional property `payments` which is a collection of the user payments

以更“范围”的方式:

$date = '2019-02-01'; // This is a basic example
User::with( 'payments', function( $query ) use ($date) {
    return $query->where( [ ['date', '<', Carbon::createDateFromString($date)->addMonths(1)], ['date', '>', Carbon::createDateFromString($date)->subMonths(1)] ] );
} )->get();

示例 2 如果您处于以支付为中心的环境中,给定由 Laravel 的 belongTo 定义的 user 关系(请参阅上面链接的文档):

$payments = Payment::with( 'user' )->where( [ ['date', '<', Carbon::createDateFromString($date)->addMonths(1)], ['date', '>', Carbon::createDateFromString($date)->subMonths(1)] ] )->get();
// this gets the payment you are looking for.

foreach($payments as $payment) {
    $user = $payment->user;
}

您也可以通过lazy-loading获取相关模型(再次参见上面的文档),也可以创建query scope

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 2019-03-10
    • 2021-07-04
    • 2015-01-07
    • 1970-01-01
    • 1970-01-01
    • 2018-01-06
    相关资源
    最近更新 更多