deleted_atがnullのデータだけ抽出しようと思っています。
また、親はparent_id is nul, 子はid = parent_idのように親子関係を持たせています。
なのでdeleted_at is not nullの親だったら子も抽出されないようにしようとしていますが上手く取り出せません。
したのphpでは1つ目のクエリで親のidを取得しています。そのidを$idに入れて、2つ目のクエリでparent_idが親のidと合致しているデータを抽出しようとしています。
php
1$stmt = $db->prepare("select * from t_bbs where parent_id is null and deleted_at is null"); 2 $stmt->execute(); 3 $data =$stmt->fetchAll(); 4 5 foreach($data as $value) { 6 $id = $value['id']; 7 $stmt = $db->prepare("select * from t_bbs where deleted_at is null and (parent_id = $id or parent_id is null) order by id asc"); 8 $stmt->execute(); 9 $res = $stmt->fetchAll(); 10 print_r($res); 11}
現状ですと最初だけ親子だけを取り出すのですが以降はずっと親だけ取り出してしまいます。
お力添えいただきたく思います!
お願い致します!
追記
テーブル定義です。テーブルは1つだけです。親と子だけなので2階層になります。
| t_bbs | CREATE TABLE `t_bbs` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `subject` varchar(255) DEFAULT NULL, `body` text DEFAULT NULL, `parent_id` int(11) DEFAULT NULL, `post_user` varchar(8) DEFAULT NULL, `created_at` datetime NOT NULL DEFAULT current_timestamp(), `updated_at` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `deleted_at` datetime DEFAULT NULL, KEY `id` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1590 DEFAULT CHARSET=utf8 |
+-----------------+ | version() | +-----------------+ | 10.4.12-MariaDB | +-----------------+
回答3件
あなたの回答
tips
プレビュー