我想搜索两个字段与两个提供的对象匹配的记录, 例如
$cnt = $this->usedCouponRepository->findByUser($validvip)->toArray() ;
$cnt2 = $this->usedCouponRepository->findByCoupon($validcoupon)->toArray() ;
获取interesection,(在usedcoupon表中查找有效优惠券与validvip配对的次数) 像这样的电话会是它 -
$cnt3 = $this->usedCouponRepository->findByUserAndCoupon($validcoupon,$validuser);
有没有神奇的功能来做到这一点或其他一些有效的方法?我讨厌在第一次寻找代码中的匹配时循环。 感谢
答案 0 :(得分:2)
不,没有“extbase magic”为你做这份工作。你必须自己实现它。但幸运的是,它并不那么难。只需向您的存储库添加一个方法,如下所示:
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;
}
现在你可以像之前尝试的那样打电话。 logicalAnd语句中的字符串'user'
和'coupon'
必须是数据库的字段名。