php - Wie erhält Laravel's Baum die endgültige übergeordnete Klassen-ID eines bestimmten Datensatzes?
某草草
某草草 2017-06-06 09:54:07
0
3
722

Zum Beispiel möchte ich die letzte übergeordnete Klasse des kleinen schwarzen Schweins mit der ID 10 erhalten. In der Tabelle ist die parent_id 9, aber was ich erhalten möchte, ist 5. Gibt es eine Möglichkeit, ob ich das beurteilen möchte? Ein bestimmter Datensatz gehört zu dieser letzten übergeordneten Klasse

某草草
某草草

Antworte allen(3)
小葫芦

做个递归查找,然后找出parent_id=null时的那个就可以了

仅有的幸福

有2种做法可以尝试:

  1. 把所有的id和parent_id查询出来,然后进行搜索,这样固定的sql语句可以进行缓存。

  2. 添加一个新字段root_id,用于记录根节点,这样就不需要搜索,直接查询即可,只是在插入的时候,需要查询一次。

漂亮男人
    $arr = array(
                array(
                    'id'        => 10,
                    'parent_id' => 9
                    ),
                array(
                    'id'        => 9,
                    'parent_id' => 5
                    ),
                array(
                    'id'        => 5,
                    'parent_id' => null
                    ),
        
        
        );
    function getParentId($arr, $id = 10) {
        foreach ($arr as $val) {
            if($val['id'] == $id) {
                if(!empty($val['parent_id'])) {
                    $id = $val['parent_id'];
                    getParentId($arr, $id);
                }else {
                    return $id;
                }
            }
        }
        return $id;
    }
    
    echo getParentId($arr, 10);
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage