前提・実現したいこと
CakePHP3で出席管理システムを作っています。
欠席を-2、早退・遅刻を0、出席を1として表しています。
そこでperson_id(学籍番号)が同じものの出席情報を日付毎に一つにまとめて2つ目の表のようにしたいです。
色々調べたのですがやり方がわかりません。最近始めたばかりあまりわかっていない部分もあります。
どのようにしたら2つめの表のように表示できるか教えて頂きたいです。
id | person_id | date | info |
---|---|---|---|
1 | 2160001 | 2020-01-22 | -2 |
2 | 2160002 | 2020-01-22 | 0 |
3 | 2160003 | 2020-01-22 | 1 |
4 | 2160004 | 2020-01-22 | 1 |
5 | 2160001 | 2020-01-29 | 0 |
6 | 2160002 | 2020-01-29 | 1 |
7 | 2160003 | 2020-01-29 | 1 |
8 | 2160004 | 2020-01-29 | -2 |
id | 2020-01-22のinfo | 2020-01-29のinfo |
---|---|---|
2160001 | -2 | 0 |
2160002 | 0 | 1 |
2160003 | 1 | 1 |
2160004 | 1 | -2 |
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
//Controller $first = $this->Attendances->find('all', ['conditions' => [ 'and'=>['date'=>'2020-01-22']]]); $this->set('first', $first); $second = $this->Attendances->find('all', ['conditions' => [ 'and'=>['date'=>'2020-01-29']]]); $this->set('second', $second); //view <table> <thead><tr> <th>学籍番号</th><th>第1回</th><th>第2回</th> </tr></thead> <tr> <?php foreach($first->toArray() as $obj): ?> <td><?=h($obj->person_id) ?></td> <td><?=h($obj->info) ?></td> <?php foreach($second->toArray() as $sobj): ?> <td><?=h($sobj->info) ?></td> <?php endforeach; ?> </tr> <?php endforeach; ?> </table>
試したこと
|id|2020-01-22のinfo|| |||
|:--|:--:|--:|
|2160001|-2|0|1|1|-2
|2160002|0|0|1|1|-2
|2160003|1|0|1|1|-2
|2160004|1|0|1|1|-2
上のソースコードで試したのですが、結果がこのようになってしまいます。2020-01-22の日付の出欠情報は表示されるが、2020-01-29の出欠情報が意図しない形で表示されてしまいます。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー