У меня проблемы с PDO :: FETCH_CLASS. Мне нужно, чтобы он вызывал __construct (массив $ data), передавая массив со значениями, возвращаемыми из базы данных.PDO FETCH_CLASS вызов __construct проходящий массив
Моя база данных, как это:
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 (массив $ данных) метод, который превратит:
<?php
$orderItem = new OrderItem(
array(
'id' => 1,
'order_id' => 10
)
);
в ожидаемое (то же самое, что и выше):
$orderItem->id;
$orderItem->order->id;
Так есть в любом случае, чтобы сделать __construct PDO вызова() и ассоциативный массив?
На самом деле мой класс OrderItem имеет ($ id, $ order). Тип $ order - это класс Order. Мне нужно, чтобы FETCH_CLASS вызывал мой метод __construct(), передавая ассоциативный массив вместо установки данных, которые знают, как это сделать. –
Зачем использовать FETCH_CLASS ?? –
Я думаю, вам нужно будет точно описать, что вы хотите, поскольку неясно –