これらの列を持つ2つのテーブルがあります(関連性の高いもののみを表示しています):
tasks table
+----+------+
| id | todo |
+----+------+
| 1 | 0 |
| 2 | 1 |
| 3 | 1 |
| 4 | 0 |
| 5 | 1 |
+----+------+
entries table
+----+---------+---------+------+
| id | task_id | user_id | done |
+----+---------+---------+------+
| 1 | 3 | 1 | 1 |
| 2 | 5 | 2 | 1 |
| 3 | 5 | 1 | 1 |
| 4 | 2 | 1 | 0 |
+----+---------+---------+------+
これらのテーブルにクエリを実行し、tasks
whereのみを保持するtodo = 1
ので、既に PHP オブジェクトにデータがあります。
次に、ユーザーが表示できる2つのリストがあります。実行するタスクとアーカイブ(完了)するタスク、および実行するタスクです。task_id
最初のリストを問題なく生成できます。一致するwhereがある場合は各タスクとエントリをループし、一致user_id == $loggeduser && done == 1
しないもののインデックスを設定解除します。ただし、一致するエントリがないため、アーカイブ リストでこれを行うロジックが見つかりません。タスクをループして、ユーザーのために完了したタスクのみを保持するにはどうすればよいですか? この場合、ユーザー 1 のアーカイブ リストでは、タスク ID 3 と 5 のみを保持し、ユーザー 2 ではタスク ID 2 のみを保持することを例外としています。
ありがとう。