【问题标题】:Zend Framework Doctrine insert one-to-manyZend Framework Doctrine 插入一对多
【发布时间】:2011-02-27 23:30:40
【问题描述】:

在订单表中,我有一个客户表和地址表。一个客户可以有很多地址,所以我在 yaml 文件中设置了一对多的关系。问题是客户表的 id 是自动生成的,所以在插入之后我不会知道客户 ID,但是客户 ID 是地址表中的外键。

尽管每组数据都在一个子表单中,但两个表的信息都在同一个表单中捕获。如何让 Doctrine 将数据插入到 Customers 表中,然后获取刚刚输入的 Customers_id 并将其用作 Addresses 表的外键。

希望我能够理解问题的本质。

顺便说一句,我正在使用 Zend Framework 和 Doctrine 1.2.3

【问题讨论】:

  • 在刷新插入时,Doctrine 不会自动填充对象的 ID 属性吗?

标签: zend-framework doctrine


【解决方案1】:

执行 $customer->save() 后,您可以使用 $customer->id(如果“id”是您的客户表的 Customers_id 列名)获取 Customers_id 以放入 Addresses 表中。

【讨论】:

    【解决方案2】:

    一旦你做了 $customer->save();以下语句 $customer->identifier();应该给你身份证。

    【讨论】:

      【解决方案3】:

      假设您使用的是 Doctrine 1.x,您可以执行以下操作:

      $cusomer->Address[] = $address; // Assign multiple addresses in this manner
      $customer->save();
      

      这将首先将客户详细信息保存到数据库,然后存储地址数据。由于学说了解客户和地址之间的关系,所以 ORM 会将客户 id 插入地址表中。此外,这将由 Doctrine 在事务中运行,确保如果其中一个操作失败,整个事务将被回滚。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-05
        • 2012-02-22
        • 2011-12-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多