Как я могу скопировать и его много детей эффективно в laravel - PullRequest
0 голосов
/ 02 февраля 2020

Мне нужно скопировать мульти родителя и его детей и его детей. Я не хочу делать вставку foreach для каждого ребенка. Каков оптимальный способ сделать это с минимальным количеством обращений к базе данных?

<code>For example query database :
<pre>
 Array
    (
        [0] => Array
            (
                [id] => 137
                [title] => Father
                [father_id] => 0
                [code] => 03
                [status] => 1
                [children] => Array
                    (
                        [0] => Array
                            (
                                [id] => 2344
                                [title] => child
                                [father_id] => 137
                                [code] => 01
                                [status] => 1
                                [children] => Array
                                    (
                                        [0] => Array
                                            (
                                                [id] => 138
                                                [title] => child 2
                                                [father_id] => 2344
                                                [code] => 01
                                                [status] => 1
                                            )
                                    )
                            )
                        [1] => Array
                            (
                                [id] => 2857
                                [title] => child
                                [father_id] => 137
                                [code] => 02
                                [status] => 1
                            )
                    )
            )
    )

Скопированный, конечно, получит новый идентификатор, а многие скопированные связанные элементы получат новый. ID и обновите соответствующий столбец. Например, у Part будет обновлен идентификатор, будет обновлен папа-идентификатор.

<code>code php

<pre>
  function getparent($Parent) {
        // find id first Array[0] copy and --> create new id <--
        $copy = Section::find($Parent)->replicate();
        $copy->toArray();
        $copy->save();

        // query All child's
        $Parent_s = Section::select('father_id','id')->where('father_id', $Parent)->get();

        foreach ($Parent_s as $value) {

            // Relationship collection
            $subresult = getparent($value->id);

            if (count($subresult) > 0) {
                $value['children'] = $subresult;                        
            }

            // My problem child array
            if(!$value['children']) {
                $copys = Section::find($value->id)->replicate();
                    // Add new id father in field Father_id
                $copys->father_id = $copy->id; 
                $copys->toArray();
                $copys->save();
            }

        }
        unset($value);

        return $Parent_s;

    }

    // id father for clone database
    getparent($request->id);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...