我有一个对象我想使用CodeIgniter / PHP添加到MySQL数据库。但问题是它还有其他对象的数组,需要插入(或更新)。
我的意思的简化示例:
数据库中的表:
+----------+
| Order |
+----------+
| - id |
| - name |
| - date |
+----------+
+-------------+
| Orderline |
+-------------+
| - orderId |
| - productId |
| - amount |
+-------------+
我要插入的对象示例:
$order->name = “John Doe”
$orderline1 = new stdClass();
$orderline1->productId = 1;
$orderline1->amount = 10;
$orderline2 = new stdClass();
$orderline2->productId = 2;
$orderline2->amount = 5;
$order->orderlines = array($orderline1, $orderline2);
所以我想在数据库中插入这些,Order-table中的1行和Orderline表中的2行。我正在使用CodeIgniter(因为我必须)。我知道如何插入对象以及如何获取最后插入的ID。但我不确定嵌套对象,我还必须首先将orderId添加到所有订单行。
到目前为止我所拥有的:
$this->db->insert('Order', $order); // no clue what will happen to the $order->orderlines doing this
$orderId = $this->db->insert_id(); // to get the id to add to the orderlines
// a loop to add the orderId
foreach($order->orderlines as $orderline){
$orderline->orderId = $orderId;
}
// to insert the orderlines
$this->db->insert_batch('orderline', $order->orderlines);
我不确定在插入订单时会发生什么,因为订单表中没有名为orderlines的行。 是否会被忽略或导致错误?这是一个好方法还是我做错了?
答案 0 :(得分:0)
应该是:
$ this-> db-> insert(' Order',$ order-> name);
此外,您可以使用rollback method查询不成功的案例。