【问题标题】:Simplify the Doctrine query简化 Doctrine 查询
【发布时间】:2012-07-04 08:50:05
【问题描述】:

我是 Doctrine ORM 或任何 ORM 的新手

$em = Zend_Registry::getInstance ()->entitymanager;         
$p = $em->createQuery ( "               
SELECT u                
FROM Teon_Model_User u              
WHERE u.app_auth IN (:app_auth)" );                     
$p->setParameter ( 'app_auth', $app_auth );         
$array = $p->getArrayResult();      
$customer_id = $array[0]['customer_id']; 


$p = $em->createQuery ( "               
SELECT p                
FROM Teon_Model_Purchase p              
WHERE p.customer IN (:customer_id)" );                  
$p->setParameter ( 'customer_id', $customer_id );       
$array = $p->getArrayResult();      
$purchase_id = $array[0]['id'];      

$p = $em->createQuery ( "               
SELECT pm               
FROM Teon_Model_PurchaseManual pm               
WHERE pm.purchase_id IN (:purchase_id)" );                  
$p->setParameter ( 'purchase_id', $purchase_id );       
$array = $p->getArrayResult();      
$m_id = $array[0]['manual_id'];     

你能不能把这个查询简化一下,看起来好傻,我在zend框架中使用Doctrine

这个查询是通过提供一个验证码来验证用户是否在他的购买中有manual_id..

【问题讨论】:

    标签: mysql zend-framework doctrine-orm


    【解决方案1】:

    这是我能想到的两种简单方法:

    <?php
    
    $em = Zend_Registry::getInstance()->entitymanager;
    
    // 1st way
    $user = $em->getRepository('Teon_Model_User')->findOneByAppAuth($app_auth);
    $user->getCustomerId();
    
    // 2nd way
    $user = $em->getRepository('Teon_Model_User')->findOneBy(array(
        'app_auth' => $app_auth,
    ));
    $user->getCustomerId();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-16
      • 2022-01-08
      • 2012-09-20
      • 2014-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多