Php 带对象的原则与DQL
我学习符号和教义。我有表格:用户、产品和付款。我想把所有的关系都整理好。例如:细枝中的product.getPackagesId.namePhp 带对象的原则与DQL,php,symfony,doctrine-orm,doctrine,Php,Symfony,Doctrine Orm,Doctrine,我学习符号和教义。我有表格:用户、产品和付款。我想把所有的关系都整理好。例如:细枝中的product.getPackagesId.name User: ID, NAME etc. products: ID, USER_ID(relationships), PACKAGES_ID(relationships)... payments: ID, PRODUCTS_ID(relationships)... 现在:我有id user(getID()),想要获得产品,但在我遇到付款问题之后 $
User: ID, NAME etc.
products: ID, USER_ID(relationships), PACKAGES_ID(relationships)...
payments: ID, PRODUCTS_ID(relationships)...
现在:我有id user(getID()),想要获得产品,但在我遇到付款问题之后
$em = $this->getDoctrine()->getEntityManager();
$connection = $em->getConnection();
$statement = $connection->prepare("SELECT * FROM `products` JOIN payments ON products.id=payments.products_id where products.user_id=:user");
$statement->bindValue('user', $userID);
$statement->execute();
$products = $statement->fetchAll();
[0] => Array //name table
(
[id] => 3 //products
[user_id] => 1 //products
[packages_id] => 1 //products
[status] => 0 //products
[mail] => //products
[data_trial] => //payments
[products_id] => 3 //payments
[data_order] => 2014-08-05 14:07:49 //payments
[data_payment] => //payments
[data_billing] => 30 //payments
[data_expiration] => //payments
)
我有所有的记录。这很好,但我有包裹,这不是教义中的目标。我不能利用人际关系。我尝试了createQuery,但返回了2个对象(用于产品和付款)
返回:
[0] => Array
(
[id] => 3
[status] =>
[mail] =>
)
[1] => Array
(
[id] => 3
[data_order] => DateTime Object
(
[date] => 2014-08-05 14:07:49.000000
[timezone_type] => 3
[timezone] => Europe/Warsaw
)
[data_payment] =>
[data_billing] => 30
[data_expiration] =>
)
您没有使用DQL,而是直接使用SQL,因为您使用的是原则DBAL而不是原则ORM。我不确定ORM是否可以做你想做的事情,但是你可以看看数组的特性:Ok。我编辑了这篇文章。我添加了DQL。返回2个对象的错误在哪里?我认为这是因为您显式地选择了它们“从中选择p,c…”。请记住,这不是SQL。它应该类似于“从MySaleBundle中选择p:Products p JOIN p.payments pa WHERE p.user_id=:id”。但是,我仍然不确定信条是否能帮你得到报酬。看:否则。用法:getResult(Query::HYDRATE\u SCALAR)我的前缀中有1个对象:[p\u id]=>3,[c\u data\u payment]等等。但是如何在twig中使用product.getPackagesId.name?product.p_getPackagesId.name不起作用。
[0] => Array
(
[id] => 3
[status] =>
[mail] =>
)
[1] => Array
(
[id] => 3
[data_order] => DateTime Object
(
[date] => 2014-08-05 14:07:49.000000
[timezone_type] => 3
[timezone] => Europe/Warsaw
)
[data_payment] =>
[data_billing] => 30
[data_expiration] =>
)