Я боролся с некоторыми 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...
Эти две пары сущностей объявлены в точно так же, поэтому я действительно не понимаю ...
Спасибо за помощь!