热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在Cakephp3.8中多次插入

我应该列出多个清单。其中两个字段具有相同的相同值。例如,如果我输入国际

我应该列出多个清单。其中两个字段具有相同的相同值。例如,如果我输入国际米兰,米兰,尤文,他们将把national_season和series_season作为共同字段。此外,用户应决定要制作的广告数量。

仅当我要插入所有内容时:错误:SQLSTATE [HY000]:常规错误:1364字段'club_id'没有默认值

在Cakephp 3.8中多次插入

我有这个数据库

DROP TABLE IF EXISTS `championships`;
CREATE TABLE IF NOT EXISTS `championships` (
`id` int(11),`club_id` int(11) NOT NULL,`season` varchar(9) NOT NULL DEFAULT ' ',`nationality_championship` varchar(50) NOT NULL DEFAULT '0',`championship_series` varchar(50) NOT NULL DEFAULT '0',`penal` int(11) DEFAULT '0',) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `clubs`;
CREATE TABLE IF NOT EXISTS `clubs` (
`id` int(11),`name` varchar(35) NOT NULL DEFAULT ' '
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
ALTER TABLE clubs
ADD PRIMARY KEY (id),MODIFY id int(11) NOT NULL AUTO_INCREMENT;
ALTER TABLE championships
ADD PRIMARY KEY (id),MODIFY id int(11) NOT NULL AUTO_INCREMENT,ADD FOREIGN KEY(club_id) REFERENCES clubs(id);

在Cakephp 3.8中多次插入

管理插入的功能是冠军控制器中的添加功能:

public function add()
{
$champiOnship= $this->Championships->newEntity();
if ($this->request->is('post')) {
$champiOnship= $this->Championships->patchEntity($championship,$this->request->getData());
if ($this->Championships->save($championship)) {
$this->flash->success(__('The championship has been saved.'));
return $this->redirect(['action' => 'index']);
}
$this->flash->error(__('The championship could not be saved. Please,try again.'));
}
$clubsUnmated=$this->Championships->Clubs->find('list',['keyField' => 'id','valueField' =>['nome_societa']])->notMatching('Championships');
$this->set(compact('championship','clubsUnmated'));
}

提取代码add.ctp:


Form->create($championship) ?>


echo $this->Form->control('season',['class'=>'form-control']);
echo $this->Form->control('nazionalità_campionato',['class'=>'form-control']);
echo $this->Form->control('serie_campionato',['class'=>'form-control']);
echo $this->Form->control('club_id',['options' => $clubsUnmated,'data-role'=>'tagsinput','type'=>'text','placeholder'=>'aggiungi squadre','class'=>'form-control']);
?>

Form->button(__('Submit')) ?>
Form->end() ?>


一方面,表单控件的字段名称与nationality_championshipchampionship_series的数据库模式所显示的字段名称不同。那不是引起这个问题,但是很快就会成为问题。

最主要的是,看起来您将从club_id中获取值数组,但是数据库中的字段是单个值。如果要坚持使用该数据库架构,则必须遍历该数组(在表单中可能应称为其他名称,以避免在创建要保存的实体时出现问题)。例如,如果将该控件重命名为clubs,则它可能看起来像这样:

if ($this->request->is('post')) {
$champiOnships= [];
$data = $this->request->getData();
foreach ($data['clubs'] as $club_id) {
$championships[] = $this->Championships->newEntity(array_merge($data,compact('club_id')));
}
if ($this->Championships->saveMany($championships)) {
$this->Flash->success(__('The championship has been saved.'));
return $this->redirect(['action' => 'index']);
}
$this->Flash->error(__('The championship could not be saved. Please,try again.'));
}

但是,即使那样也可能不是您真正想要的,因为它在数据库中多次重复了冠军数据。我认为您真正想要的是根本不在该表中拥有club_id,而是拥有一个championships_clubs连接表,然后您可以将club_id控件命名为{{ 1}},并且原始的补丁程序和保存代码可以很好地创建整个记录结构。


推荐阅读
  • PHP中元素的计量单位是什么? ... [详细]
  • Understanding the Distinction Between decodeURIComponent and Its Encoding Counterpart
    本文探讨了 JavaScript 中 `decodeURIComponent` 和其编码对应函数之间的区别。通过详细分析这两个函数的功能和应用场景,帮助开发者更好地理解和使用它们,避免常见的编码和解码错误。 ... [详细]
  • BZOJ4240 Gym 102082G:贪心算法与树状数组的综合应用
    BZOJ4240 Gym 102082G 题目 "有趣的家庭菜园" 结合了贪心算法和树状数组的应用,旨在解决在有限时间和内存限制下高效处理复杂数据结构的问题。通过巧妙地运用贪心策略和树状数组,该题目能够在 10 秒的时间限制和 256MB 的内存限制内,有效处理大量输入数据,实现高性能的解决方案。提交次数为 756 次,成功解决次数为 349 次,体现了该题目的挑战性和实际应用价值。 ... [详细]
  • 结语 | 《探索二进制世界:软件安全与逆向分析》读书笔记:深入理解二进制代码的逆向工程方法
    结语 | 《探索二进制世界:软件安全与逆向分析》读书笔记:深入理解二进制代码的逆向工程方法 ... [详细]
  • 本文深入探讨了 MXOTDLL.dll 在 C# 环境中的应用与优化策略。针对近期公司从某生物技术供应商采购的指纹识别设备,该设备提供的 DLL 文件是用 C 语言编写的。为了更好地集成到现有的 C# 系统中,我们对原生的 C 语言 DLL 进行了封装,并利用 C# 的互操作性功能实现了高效调用。此外,文章还详细分析了在实际应用中可能遇到的性能瓶颈,并提出了一系列优化措施,以确保系统的稳定性和高效运行。 ... [详细]
  • 本教程旨在为HTML5初学者提供Canvas画布的基础知识与实践指导。通过详细解析Canvas元素的使用方法、绘图API及常见图形绘制技巧,帮助读者快速掌握在网页中利用Canvas进行动态图形创作的基本技能。 ... [详细]
  • 本文详细解析了 MySQL 5.7.20 版本中二进制日志(binlog)崩溃恢复机制的工作流程。假设使用 InnoDB 存储引擎,并且启用了 `sync_binlog=1` 配置,文章深入探讨了在系统崩溃后如何通过 binlog 进行数据恢复,确保数据的一致性和完整性。 ... [详细]
  • Java 零基础入门:SQL Server 学习笔记(第21篇)
    Java 零基础入门:SQL Server 学习笔记(第21篇) ... [详细]
  • MySQL性能优化与调参指南【数据库管理】
    本文详细探讨了MySQL数据库的性能优化与参数调整技巧,旨在帮助数据库管理员和开发人员提升系统的运行效率。内容涵盖索引优化、查询优化、配置参数调整等方面,结合实际案例进行深入分析,提供实用的操作建议。此外,还介绍了常见的性能监控工具和方法,助力读者全面掌握MySQL性能优化的核心技能。 ... [详细]
  • 本文深入探讨了 HTML 中的 `margin` 属性,详细解析了其基本特性和应用场景。文章不仅介绍了 `margin` 的基本概念,还重点讨论了垂直外边距合并现象,并分析了 `margin` 在块级元素与内联元素中的不同表现。通过实例和代码示例,帮助读者全面理解 `margin` 的使用技巧和常见问题。 ... [详细]
  • 深入解析 Django 中用户模型的自定义方法与技巧 ... [详细]
  • 在Unity中进行3D建模的全面指南,详细介绍了市场上三种主要的3D建模工具:Blender 3D、Maya和3ds Max。每种工具的特点、优势及其在Unity开发中的应用将被深入探讨,帮助开发者选择最适合自己的建模软件。 ... [详细]
  • 如何利用Python脚本实现钉钉自动化考勤打卡
    本文详细探讨了利用Python脚本实现钉钉自动化考勤打卡的方法。通过具体实例操作,解决了很多用户在实际应用中遇到的难题,帮助读者高效掌握这一实用技能。 ... [详细]
  • 在稀疏直接法视觉里程计中,通过优化特征点并采用基于光度误差最小化的灰度图像线性插值技术,提高了定位精度。该方法通过对空间点的非齐次和齐次表示进行处理,利用RGB-D传感器获取的3D坐标信息,在两帧图像之间实现精确匹配,有效减少了光度误差,提升了系统的鲁棒性和稳定性。 ... [详细]
  • 进程(Process)是指计算机中程序对特定数据集的一次运行活动,是系统资源分配与调度的核心单元,构成了操作系统架构的基础。在早期以进程为中心的计算机体系结构中,进程被视为程序的执行实例,其状态和控制信息通过任务描述符(task_struct)进行管理和维护。本文将深入探讨进程的概念及其关键数据结构task_struct,解析其在操作系统中的作用和实现机制。 ... [详细]
author-avatar
阿悅11
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有