PDO FETCH_CLASS调用__construct传递数组


PDO FETCH_CLASS call __construct passing array

这里的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保留字