suchen

Heim  >  Fragen und Antworten  >  Hauptteil

php - Wie erhält Laravel's Baum die endgültige übergeordnete Klassen-ID eines bestimmten Datensatzes?

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

某草草某草草2736 Tage vor703

Antworte allen(3)Ich werde antworten

  • 高洛峰

    高洛峰2017-06-06 09:56:07

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

    Antwort
    0
  • 仅有的幸福

    仅有的幸福2017-06-06 09:56:07

    有2种做法可以尝试:

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

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

    Antwort
    0
  • 漂亮男人

    漂亮男人2017-06-06 09:56:07

        $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);

    Antwort
    0
  • StornierenAntwort