【发布时间】:2017-03-20 09:08:42
【问题描述】:
我正在使用 OctoberCMS builder 插件来创建表单以将数据存储到数据库中。默认情况下,每个模型都属于单个数据库表。表单可以将数据存储到单个数据库表中。那么如何使用 Builder Plugin 将数据插入从单个表单捕获的 2 个不同的表中。
问候
【问题讨论】:
标签: database forms model builder octobercms
我正在使用 OctoberCMS builder 插件来创建表单以将数据存储到数据库中。默认情况下,每个模型都属于单个数据库表。表单可以将数据存储到单个数据库表中。那么如何使用 Builder Plugin 将数据插入从单个表单捕获的 2 个不同的表中。
问候
【问题讨论】:
标签: database forms model builder octobercms
为此,您必须使用模型类手动处理保存过程。
1- 打开你的模型类。
2- 编写一个模型偶函数,如public function afterSave(){}
例如,如果我在 reservation 模型中有一个 total 字段,并且我希望将此字段值自动插入另一个名为 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
【讨论】:
find(1)(它只是找到带有id=1 的模型,否则会失败,或者不是吗?)一个可以做findOrCreate(['reservation' => $this->id]) 保存在与此特定reservation 相关联的行中,只是为了给出一个更“现实”的例子,并指向Laravel / Elouent docs 进行更深入的挖掘,...
find(1) 是一个不现实的例子,他可以编写代码来访问应用程序中的任何模型:D