0
Doctrine2 似乎正在爲其代理對象添加魔法來實現延遲加載。這使我的結果不正確,我無法弄清楚是什麼原因造成的。Doctrine2代理getId魔法?
這裏是我的類模型:
類 「RedProduct」 從抽象類 「產品」,它實現了接口 「BaseProduct」
抽象類產品持有主鍵繼承:
abstract class Product implements BaseProduct {
/** @Id @Column (type="integer", name="ID") @GeneratedValue */
protected $id;
public function getId() {
return $this->id;
}
}
我希望RedProduct在返回之前將ID前面加上字母'R'。
class RedProduct extends Product {
public function getId() {
return 'R' . $this->id;
}
}
但在代理類中,getId()方法(也是唯一的getId()方法)已被修改爲這樣:
public function getId()
{
if ($this->__isInitialized__ === false) {
return $this->_identifier["id"];
}
$this->__load();
return parent::getId();
}
謝謝你的迴應。你是對的,除了當對象沒有被初始化的時候,這種情況下,當產品對象是一個ProductReview對象時,RedProduct對象是一個延遲加載的關聯引用。從代理方法來看,如果對象沒有初始化,它只是返回主鍵。我的問題依然存在 - getId()是否有特殊情況? – iamdev 2012-08-16 00:40:52
我應該補充說,如果我調用$ review-> getProduct() - > getName();首先,然後我調用$ review-> getProduct() - > getId();它是正確的,因爲getName()強制產品對象爲「load()」 – iamdev 2012-08-16 00:45:40
不,getId()不是保留方法或任何東西就像我所知道的那樣。 – 2012-08-16 13:07:52