当前位置: 首页 > 知识库问答 >
问题:

habtm上的saveall创建重复的新行

崔绍辉
2023-03-14

我有一个简单的HABTM与一个教训/学生表.我只是创建一个新的教训与现有的学生通过一个而循环,所以我应该得到2个新的行。我正在测试这个功能。我得到的是课程表中的4行而不是2行。我不知道为什么要创建额外的2行,因为它们是在调试中输出的2行的副本。所有内容都正确保存,就像加入课程/学生表中的条目一样,所有的FK都存在。

为了增加混淆,有时同一代码会生成所需的2行。这是不稳定的,所以我做错了什么。我按照手册中的habtm阵列设置进行保存。

http://book.cakephp.org/2.0/en/models/saving-your-data.html

 private function book_lessons($lesson=null) {

       // debug( $lesson);

     $i=0;
     while ($i<2)
     {
      $date=date('Y-m-d');
      $data[$i]=array();
      $this->Lesson->create();

      $data[$i]['Lesson']['lesson_date']= $date;
      $data[$i]['Lesson']['start_time']= $lesson['Lesson']['start_time'];
      $data[$i]['Lesson']['end_time']=$lesson['Lesson']['end_time'];

      $data[$i]['Lesson']['schedule_rec']= 1;
      $data[$i]['Lesson']['subject_id']= $lesson['Lesson']['subject_id'];
      $data[$i]['Lesson']['tutoring_type_id']= 1;
      $data[$i]['Lesson']['tutor_id']= $lesson['Lesson']['tutor_id'];
      $data[$i]['Lesson']['subject_id']= $lesson['Lesson']['subject_id'];
      $data[$i]['Lesson']['term_id']= $lesson['Lesson']['term_id'];

      $data[$i]['Student']['id']=$lesson['Student']['id'];

     $i=$i+1;

     }


      $this->Lesson->saveAll($data);

public $hasAndBelongsToMany = array(

        'Student' => array(
            'className' => 'Student',
            'joinTable' => 'lessons_students',
            'foreignKey' => 'lesson_id',
            'associationForeignKey' => 'student_id',
            'unique' => 'keepExisting',

        )
    );


array(
    (int) 0 => array(
        'Lesson' => array(
            'lesson_date' => '2015-06-11',
            'start_time' => '16:00:00',
            'end_time' => '17:00:00',
            'schedule_rec' => (int) 1,
            'subject_id' => '16',
            'tutoring_type_id' => (int) 1,
            'tutor_id' => '12',
            'term_id' => '10'
        ),
        'Student' => array(
            'id' => '206'
        )
    ),
    (int) 1 => array(
        'Lesson' => array(
            'lesson_date' => '2015-06-11',
            'start_time' => '16:00:00',
            'end_time' => '17:00:00',
            'schedule_rec' => (int) 1,
            'subject_id' => '16',
            'tutoring_type_id' => (int) 1,
            'tutor_id' => '12',
            'term_id' => '10'
        ),
        'Student' => array(
            'id' => '206'
        )
    )
)

共有1个答案

扈俊健
2023-03-14

将美元移到这个位置-

 类似资料:
  • 创建新的Arraylist(如第一种方法)与创建第二种方法之间的区别是什么?在创建一个时,您考虑了什么?

  • 我正在完成这个关于SpringBean范围的教程。我手工设置所有东西,然后用maven打包。这是我的项目结构: 你好orld.java: 主应用。爪哇: 豆。xml: 波姆。xml: 然后我像这样运行罐子: 获取以下日志: 你能告诉我,我做错了什么吗?

  • 我有一个df,看起来像: 作为pd进口熊猫 df df

  • 在Laravel5.1中,对于MySQL insert,我希望查看记录是否已经存在,并在重复时更新,如果不存在,则创建新记录。 我已经搜索了SO,答案是旧laravel版本。在一个旧的主题中,它说去年在core中添加了一个新的方法。但是当我尝试时,我得到了错误: 这是我使用的查询: 其中,是该表中唯一的外键,我想更新记录(如果存在)或创建一个新记录。我尝试搜索5.1文档,但找不到我需要的信息。有人

  • 问题内容: 我有一个条件,即StringBuilder会不断存储与大型平面文件(100兆字节)中的模式匹配的行。但是,达到条件后,我将StringBuilder变量的内容写入文本文件。 现在我想知道是否应该通过重置对象->使用相同的变量 要么 请提出就性能和OOM问题而言您认为哪个更好。 问题答案: 我认为通话仍然很昂贵,您应该这样做: 重置它。 更新: 查看完 源代码后 ,似乎完整保留了旧缓冲区

  • 我有一个对象,如下所示: 我想过滤并创建一个满足任何条件的新数组。例如:过滤器的名称为“AD”,并创建一个新的密钥数组,如下所示: 尝试地图 尝试过了。过滤器: 提前谢谢