我需要知道是否可以做这样的事情:

$customerClient = $clientTable->findByCustomerNumber($this->array_data[$rowIndex]['D']);
$customerClient = $customerClient->findOneByEmpCartera($portfolio);


我收到此错误消息


调用未定义的方法Doctrine_Collection :: findOneByEmpCartera()


我需要在$clientTable对象表中做2个过滤器,

任何建议对我都会有用。

最佳答案

你不能这样。

findBy*方法始终返回Doctrine_Collection。并且需要从findBy*对象调用Table方法。

您可以在findBy的一个自定义ClientTable中执行此操作:

  // you may update relation and/or table name
  public function findOneCustomerByEmpCartera($customer_member, $portfolio)
  {
    $q = $this->createQuery()
      ->from('Client cl')
      ->leftJoin('cl.Customer cu');
      ->where('cl.customer_number = ? AND cu.emp_cartera', array($customer_member, $portfolio));

    return $q->limit(1)->execute()->getFirst();
  }

关于symfony1 - Symfony Doctrine 中的多重查找,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10989047/

10-12 02:16