Php 带对象的原则与DQL

Php 带对象的原则与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()),想要获得产品,但在我遇到付款问题之后 $

我学习符号和教义。我有表格:用户、产品和付款。我想把所有的关系都整理好。例如:细枝中的product.getPackagesId.name

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] => 
    )