2016-11-07 3 views
1

Я использую плагин OctCMS для создания форм для хранения данных в базе данных. По умолчанию каждая модель относится к одной таблице базы данных. И форма может хранить данные в одной таблице базы данных. Итак, как вставить данные в две разные таблицы, взятые из одной формы с помощью Builder Plugin.Вставьте данные в две разные таблицы из одной формы с помощью плагина OctoberCMS Builder

С уважением

ответ

2

Чтобы сделать это, Вы должны будете обрабатывать процесс сохранения вручную с помощью класса модели.

1- Откройте класс модели.

2- Написать модель даже функционировать как public function afterSave(){}

Например, если у меня есть total поле в reservation модели, и я хочу это значение поля будет автоматически вставлен в другой таблице называется accounting.

public function afterSave(){ 
    $accounting = \Namespace\Pluginname\Models\Accounting::find(1); 
    $accounting->myField = $this->total; 
    $accounting->save(); 
} 

Так в afterSave, beforeSave, beforeCreate или afterCreate вы можете справиться процесс сохранения моделей.

Чтобы увидеть различие между этими функциями вы можете прочитать по этой ссылке: https://octobercms.com/docs/database/model#events

+0

Хорошего ответа. Хотя в этом родовом сценарии я, возможно, предложил бы другой способ сохранения других данных, т. Е. Вместо '' 'find (1)' '' (который просто находит модель с идентификатором id = 1 и в противном случае терпит неудачу, или не так ли?) можно было бы сделать '' 'findOrCreate (['reservation' => $ this-> id])' '' сохранить в строке, связанной с этим конкретным '' '' '' '' '' '' '' '' '' '' '' ' дать более «реалистичный» пример и указать на [Laravel/Elouent docs] (https://laravel.com/docs/5.3/eloquent#other-creation-methods) для некоторых более глубоких копаний, ... – trollkotze

+0

.. а также [отношения] (https://octobercms.com/docs/database/relations) и поведение [отношение] (https://octobercms.com/docs/backend/relations#configuring-relation), которое может быть еще более целесообразным использовать в этом сценарии. Просто умение здесь, хотя: P, и пытаюсь дать некоторые дополнительные указатели другим новичкам вроде меня, что может быть полезно для дальнейшего чтения. – trollkotze

+0

Хороший пример. Разумеется, 'find (1)' был нереалистичным примером кода, который он может написать для доступа к любой модели в приложении: D –

Смежные вопросы