как: findByProperty в двух полях в typo3 v4.5.30?

Я хочу искать записи, которые совпадают с двумя полями с двумя предоставленными объектами, например

 $cnt = $this->usedCouponRepository->findByUser($validvip)->toArray() ;
 $cnt2 = $this->usedCouponRepository->findByCoupon($validcoupon)->toArray() ;

get interesection (узнайте, сколько раз validvip соединяется с validcoupon в таблице usedcoupon), вызов, подобный этому, будет таким:

$cnt3 = $this->usedCouponRepository->findByUserAndCoupon($validcoupon,$validuser);

есть ли волшебная функция для этого или какой-то другой эффективный способ? Я бы не хотел просто перебирать первый поиск совпадения в коде. Спасибо


person The Newbie Qs    schedule 29.11.2013    source источник


Ответы (1)


Нет, никакая «магия extbase» не сделает эту работу за вас. Вы должны реализовать это самостоятельно. Но тебе повезло, это не так сложно. Просто добавьте в свой репозиторий такой метод:

public function findByUserAndCoupon($validcoupon, $validuser) {
    $query = $this->createQuery();
    $query->matching(
        $query->logicalAnd(
            $query->equals('user', $validuser),
            $query->equals('coupon', validcoupon)
        )
    );
    $result = $query->execute();
    return $result;
}

Теперь вы можете называть это так же, как пытались раньше. Строки 'user' и 'coupon' в операторе logicalAnd должны быть именами полей базы данных.

person Daniel    schedule 30.11.2013
comment
да, это именно то, что я сделал. Спасибо. - person The Newbie Qs; 02.12.2013