php - Symfony - 如何使用查询构建器将数组用作参数?

标签 php symfony dql

我即将输出一个包含多个文档(称为豁免)的列表。然而,并不是每个用户都应该被允许查看所有文档,因此我实现了一个过滤器来检查用户是否分配了相同的“航空公司”和“市场”。所以每个用户应该只能看到分配给他的“航空公司”和“市场”的文件。 这是 f.e.用户实体航空公司的 setter/getter :

 /**
 * Get airlines
 *
 * @return array 
 */
public function getAirlines()
{
    if($this->airlines != null)
    {
        $airlines = explode(",", $this->airlines);
        return $airlines; 
    }

    return Array();        
}

这是 Controller 逻辑:

        //Get User:
        $user = $this->container->get('security.context')->getToken()->getUser();

        // Gets an Array of User markets
        $user_markets = $user->getMarkets();

        // Gets an Array of User carriers
        $user_airlines = $user->getAirlines();


        if(!$this->ROLE_IS(Array( 'ROLE_XY'))){
            $query = $em->createQuery(
                'SELECT w
                FROM WaiverBundle:Waiver w
                WHERE w.carrier = :carrier 
                AND w.market = :market
                ORDER BY w.id DESC'
            )
               ->setFirstResult($page*10-10)
               ->setMaxResults(10)
               // I wan't to get the whole array and not just one position here:
               ->setParameters(array(':carrier'=>$user_airlines[0],
                ':market'=>$user_markets[0],
            ));  
        }else{
            $query = $em->createQuery(
                'SELECT u
                FROM WaiverBundle:Waiver u
                ORDER BY u.id DESC'
            )
               ->setFirstResult($page*10-10)
               ->setMaxResults(10);
        }

问题:如何设法将 DQL 属性与数组进行比较,而不仅仅是将字符串作为参数?

最佳答案

我想你想使用“IN”语法,而不是“=”语法:

'SELECT w
    FROM WaiverBundle:Waiver w
    WHERE w.carrier IN (:carrier)
    AND w.market = :market
    ORDER BY w.id DESC'

关于php - Symfony - 如何使用查询构建器将数组用作参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35001053/

相关文章:

php - Laravel markdown 邮件 vs blade 模板

php - 模拟 Controller 从 WebTestCase 调用的服务

javascript - Symfony app_dev.php install\DOMDomain 错误

php - Symfony2 , 提高查询性能

json - 使用 Doctrine2 请求 JSON 类型字段中的键/值

php - DQL Doctrine 在哪里与 CASE 一起使用?

php - 将值放入 sql 枚举的最佳实践

php - 如何将 HTML5 'required' 属性添加到 woocommerce_form_field

php - mysql LAST_INSERT_ID 无法通过 php 工作

php - 使用新的 Symfony 5 Authenticator 注册后如何手动验证用户?