Php 填写花名册时间表的最佳方法

Php 填写花名册时间表的最佳方法,php,mysql,laravel,eloquent,blade,Php,Mysql,Laravel,Eloquent,Blade,各位程序员 我用PHP构建了一个花名册应用程序,框架是:Laravel。我有以下问题: 我的应用程序有:用户、Taskdate和TaskdateTime。每个用户都可以获得分配给他们的TaskdateTime。该TaskdateTime是Taskdate的子级。我想填充一个时间表,每个用户都可以看到他们所有的时间。时间表如下所示: 我在应用程序中所做的是:获取所有用户,获取所有Taskdate,并根据Taskdate,获取正确Taskdate的TaskdateTime。我是这样做的: $tas

各位程序员

我用PHP构建了一个花名册应用程序,框架是:Laravel。我有以下问题:

我的应用程序有:用户、Taskdate和TaskdateTime。每个用户都可以获得分配给他们的TaskdateTime。该TaskdateTime是Taskdate的子级。我想填充一个时间表,每个用户都可以看到他们所有的时间。时间表如下所示:

我在应用程序中所做的是:获取所有用户,获取所有Taskdate,并根据Taskdate,获取正确Taskdate的TaskdateTime。我是这样做的:

$taskdates = Taskdate::with('users')->where_date($date)->get();
$employees = Usergroup::with(array('users', 'users.workdates'))->where('usergroup_title', '=', 'Employees')->first();
您可以看到我获取usergroups,其关系为:Users和User->workdates关系。其中workdates返回上述TaskdateTime对象

现在在我看来,我这样做是为了用数据填充它。这似乎是一个额外的麻烦,我想这可以让我更容易,但我不能把我的头围绕它。无论如何,这是代码:

<table id="plan" class="table table-bordered">

    <thead>
        <th></th>
        @foreach($taskdates as $taskdate)
            <th id="{{ $taskdate->id }}">{{ $taskdate->subject }}</th>
        @endforeach
    </thead>
    <tbody>
        @foreach($employees as $employee)
            <tr id="{{ $employee->id }}">
                <td>{{ $employee->name }}</td>

                 @foreach($taskdates as $taskdate)

                    <?php
                    $result = array_filter($employee->workdates, function($user) use ($taskdate){
                         return $user->id === $taskdate->id;
                    });
                    ?>

                    @if( empty($result) )
                        <td></td>
                    @else
                        <td id="{{$result[key($result)]->pivot->id }}" style="{{ ($result[key($result)]->pivot->taskdate_isread) ? '' : 'font-weight:bold;'}}">
                            {{date('H:i', strtotime($result[key($result)]->pivot->taskdate_time))}}
                        </td>
                    @endif


                 @endforeach  

            </tr>
        @endforeach
    </tbody>
</table>

@foreach($taskdates作为$taskdate)
{{$taskdate->subject}
@endforeach
@foreach($employees作为$employees)
{{$employee->name}
@foreach($taskdates作为$taskdate)
@if(空($result))
@否则
{{date('H:i',strottime($result[key($result)]->pivot->taskdate_-time))}
@恩迪夫
@endforeach
@endforeach
因此,我过滤每个用户的整个workdates关系,如果它包含Taskdate id,如果它是空的,则不回显任何内容

HTML/PHP的语法在BLADE中,因此PHP解析看起来可能不正确,但确实如此

编辑:

问题:


我的代码感觉臃肿。我不认为这是达到目的的最有效的方法。你对此有何看法?我希望尽可能高效。

你的问题是什么?代码有效吗?是的,代码有效。但它感觉臃肿。我想知道这是否是最有效的方法。