Копировать записи с отношениями - PullRequest
0 голосов
/ 03 октября 2018
Hospital Table
id | name | address
-----------------------

Hospital_Key Table
id | hospital_id(fk of Hospital Table) | type
-----------------------------------------------

Hospital_Column Table
id | hospital_id(fk of Hospital Table) | name
---------------------------------------------------------

Hospital_fields Table

id | Hospital_Key_id(fk of Hospital_Key Table) | Hospital_col_id(fk of Hospital_Column Table) | data
------------------------------------------

---------------------------------------------------------------

Я хочу реплицировать / клонировать все данные для любой записи и дочерних записей. Например, таблица больницы для одной записи. Получите данные из Hospital, Hospital_Key, Hospital_Column и реплицируйте все данные в той же таблице с новыми первичными ключами.

    $input = $request->all();

    $library = Library::with('key', 'col','key.field')->findOrFail($input['lib_id']);
    $new = $library->replicate();
    $new->user_id = Auth::id();
    $new->privacy_setting = 'Private';
    $new->push();

    $library->relations = [];

    $library->load('key', 'col','key.field');
    $relations = $library->getRelations();

    foreach ($relations as $relation => $items) {

        foreach ($items as $item) {

            $newfield = $new->{$relation}()->create($item->toArray());
        }
    }

Приведенный выше код копирует записи Hospital, Hospital_Key, Hospital_Column. Приведенный выше код не копирует записи Hospital_fields (внук)

Отношения: Больница hasmany Hospital_Key, Больница hasmany Hospital_Column,Hospital_Key hasmany Hospital_fields Как реплицировать Hospital_fields Данные таблицы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...