这里的PDO::FETCH_class有点问题。我需要它来调用__construct(array$data),它将从数据库返回的值传递给数组。
我的数据库是这样的:
order -> id;
order_item -> id, order_id;
这就是我从数据库中检索的方式:
<?php
public function find($id) {
$stmt = $this->db->prepare("SELECT * FROM orderItem WHERE id = :id");
$stmt->setFetchMode('PDO::FETCH_CLASS, 'Store'Model'OrderItem');
$stmt->execute(array('id' => $id));
return $stmt->fetch();
}
问题是PDO::FETCH_CLASS正在创建:
$orderItem->id;
$orderItem->order_id;
代替
$orderItem->id;
$orderItem->order->id;
我做了一个__construct(array$data)方法,它将变成:
<?php
$orderItem = new OrderItem(
array(
'id' => 1,
'order_id' => 10
)
);
转换为预期(同上):
$orderItem->id;
$orderItem->order->id;
那么,有没有办法让PDO调用__construct()传递和关联数组呢?
fetch方法PDO::FETCH_CLASS
返回所请求类的一个新实例,将列映射到类中的命名属性。
假设您的类Store''Model''OrderItem
class Store'Model'OrderItem {
public $order;
public $order_id;
public $otherdata; //
}
要将值映射到类中的命名属性,您需要JOIN两个表
SELECT orders.id,order_item.order_id
FROM orders, order_item
WHERE orders.id = order_item.id
AND order_id =:id
请参阅SQLFiddle
我将订单更改为订单,因为ORDER
是保留字