我一直在努力與一些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...
這兩對實體在聲明完全相同的方式,所以我真的不明白它...
感謝您的幫助!