我需要知道是否有办法做这样的事情:
$customerClient = $clientTable->findByCustomerNumber($this->array_data[$rowIndex]['D']);
$customerClient = $customerClient->findOneByEmpCartera($portfolio);
我收到此错误消息
调用未定义的方法Doctrine_Collection :: findOneByEmpCartera()
我需要在$clientTable
对象表中进行2次过滤,
任何建议对我都有用。
答案 0 :(得分:7)
Symfony 1.4实际上可以一次性处理多个字段,但是如何使用这个功能是荒谬的
Doctrine::getTable('MtCheck')->findOneBy('idAndc_type', array($id,$type))
表格
CREATE TABLE `mt_check` (
`id` int(11) NOT NULL,
`c_type` int(11) NOT NULL,
`c_ver` int(11) DEFAULT NULL,
PRIMARY KEY (`id`,`c_type`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
你可以使用'And'或'Or'确切,并且之前和之后都没有空格。
答案 1 :(得分:4)
你不能这样。
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();
}
答案 2 :(得分:2)
Radanmanf的回答帮助我轻松解决了我的问题。 根据这个问题,以下也应该有效。
学说:: getTable( 'MtCheck') - > findOneByIdAndCType($ ID,$型);
请注意这里的区别。没有array()作为参数传递。只是价值观。
我尝试了两种方法,但都适合我。