2012-05-10 144 views
1

我一直在努力與一些findBy使用一個實體,我真的不明白什麼是錯的。Zend Framework&Doctrine 2 findBy使用返回空數組的實體

我使用這兩個類:

GPos_Model_Product

/** 
* @Entity 
* @Table(name="Product") 
*/ 
class GPos_Model_Product extends GPos_Doctrine_ActiveEntity { 
    /** 
    * @Id @Column(type="integer") 
    * @GeneratedValue 
    */ 
    protected $id; 

    /** 
    * @ManyToOne(targetEntity="GPos_Model_Store") 
    * @JoinColumn(name="store_id", referencedColumnName="id") 
    **/ 
    protected $store; 
} 

GPos_Model_Store

/** 
* @Entity 
* @Table(name="Store") 
*/ 
class GPos_Model_Store extends GPos_Doctrine_ActiveEntity { 
    /** 
    * @Id @Column(type="integer") 
    * @GeneratedValue 
    */ 
    protected $id; 

    /** @Column(name="status", type="string", columnDefinition="enum('active', 'deleted')") */ 
    protected $status = 'active'; 
} 

注:我已經在這兩個類中刪除無用場使其更具可讀性

所以這裏的問題: 在我的控制器的一個我試圖檢索鏈接到一個特定的存儲中的所有產品:

public function indexAction() { 
    $this->_helper->getHelper('layout')->disableLayout(); 
    $authNamespace = new Zend_Session_Namespace('Zend_Auth'); 

    //get store's products list. 
    $store = GPos_Model_Store::find($authNamespace->store); 
    var_dump($store); //prints store successfully. 
    //next line throws an unusable exception talking about layout.phtml not found... 
    $products = GPos_Model_Product::findByStore($store->getId()); 
    //give it to the view for the products list rendering. 
    var_dump($products); 
    $this->view->products = $products; 
} 

夠奇怪的,當我使用$products = GPos_Model_Product::findByStore($store);相反,我得到沒有例外,但結果只是一個空數組。 我在另一個控制器中使用了完全相同的方法(使用getId()),它關於兩個具有相同關係且工作正常的其他實體。

我檢查了我的數據庫,我用作參數的商店確實綁定了一些產品,這意味着一個空數組,因此結果也不正確。我應該找回8個產品像一個數組...

這裏是我所工作的罰款其它控制器的代碼(再次縮小了代碼):

$user = GPos_Model_User::findOneByLogin($form->getValue('login')); 
$contact = GPos_Model_Contact::findByUser($user->getId()); 
//these lines work perfectly and I'm receiving an array of `GPos_Model_Contact` entities... 

這兩對實體在聲明完全相同的方式,所以我真的不明白它...

感謝您的幫助!

回答

1

YEAH!

我發現我的錯誤......它實際上與我的關係無關。
我的錯誤是我使用gedmo並忘記設置默認語言環境,這意味着它無法檢索任何產品,因爲它不知道在哪裏尋找。 Gedmo正在拋出一個異常,但它被佈局沒有發現異常覆蓋(這是一種zend bug,因爲我的佈局沒有問題)。

感謝XDebug和幾個小時的耐心,我終於能夠找到確切的異常消息並在幾分鐘內修復它。

感謝的人誰反正注意,這是我的錯,沒有提供足夠的代碼(與gedmo東西),因爲我認爲這實際上也設置...

相關問題