0

プログラマー仲間、

フレームワーク:Laravelを使用して、PHPでビルドされた名簿アプリケーションを取得しました。そして、私は次の問題を抱えています:

私のアプリケーションには、Users、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();

関係 : 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>

そのため、Taskdate ID を保持している場合、各ユーザーの workdates 関係全体をフィルタリングしています。空の場合は、何もエコーしません。

HTML/PHP の構文は BLADE にあるため、PHP の解析が正しくないように見えるかもしれませんが、そうです。

編集 :

質問 :

私のコードは肥大化しています。これが結果を達成するための最も効率的な方法だとは思いません。これについてどう思いますか。私はできるだけ効率的であることが好きです。

4

0 に答える 0