Множество findby в доктрината на symfony

Трябва да знам дали има начин да направя нещо подобно:

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

Получавам това съобщение за грешка

Извикване на недефиниран метод Doctrine_Collection::findOneByEmpCartera()

Трябва да направя 2 филтъра в $clientTable таблица с обекти,

Всеки съвет ще ми е от полза.


person JERC    schedule 12.06.2012    source източник


Отговори (3)


Не можеш по този начин.

Методът 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();
  }
person j0k    schedule 12.06.2012

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;

Можете да използвате точно „И“ или „Или“ и без интервали преди и след.

person Radamanf    schedule 31.10.2012
comment
Мисля, че можете също да напишете findOneByidAndc_type (или нещо подобно) вместо findOneBy. - person j0k; 31.10.2012

Отговорът на Раданманф ми помогна лесно да разреша проблема си. Според въпроса следващото също трябва да работи.

Doctrine::getTable('MtCheck')-›findOneByIdAndCType($id,$type);

Обърнете внимание на разликата тук. Не е подаден array() като параметър. Само ценностите.

Пробвах и двата метода и двата ми свършиха работа.

Допълнително обяснение DQL: DOctrine Query Language: Magic Finders

person nilufer    schedule 24.04.2013