筛选器范围未返回正确的结果

时间:2019-02-16 16:23:07

标签: laravel-5 filter eloquent

嘿,我正确了此代码,以基于两个数据列表过滤和搜索表 所以我在控制器中写了这段代码

  $films = Film::filter()->get();

在我的模型中是这样:

 public function scopeFilter($query)
    {
        $directors = request('director')[0];
        $genres=request('genre')[0];
        if (isset($directors) && $directors != []) {
            foreach ($directors as $director) {
                $query->orwhere('director', $director);
            }
            if( isset($genres) && $genres!=[] ){
                    $query->where(function ($query) use ($genres){
                        foreach ($genres as $genre) {
                            $query->orwhere('genre', $genre);
                        }
                    });
            }
        }else{
            if( isset($genres) && $genres!=[] ){
                foreach ($genres as $genre) {
                    $query->orwhere('genre', $genre);
                }
            }
        }
        return $query;
    }

最后在两个变量之间使用or代替and 有谁能解决这个问题 谢谢

1 个答案:

答案 0 :(得分:0)

您收到错误了吗?当您说它不起作用时,具体是什么不起作用?是它返回的数据不正确吗?

此外,import pygame # Window size WINDOW_WIDTH = 400 WINDOW_HEIGHT = 400 GREY = ( 226, 232, 233 ) ### ### Spring sprite that is either upright or compressed ### class SpringSprite( pygame.sprite.Sprite ): def __init__( self ): pygame.sprite.Sprite.__init__( self ) self.upright = pygame.image.load("spring.png").convert_alpha() # 64 x 100 self.compressed = pygame.image.load("spring_compressed.png").convert_alpha() # 64 x 70 self.image = self.upright self.rect = self.image.get_rect() self.rect.center = ( WINDOW_WIDTH//2, WINDOW_HEIGHT//2 ) self.crouched = False self.height_delta= ( self.upright.get_height() - self.compressed.get_height() ) // 2 # 15 pixels (centred) def crouch( self, crouch=True ): if ( self.crouched != crouch ): x,y = self.rect.center if ( crouch ): # We've changed from upright to crouched self.image = self.compressed y += self.height_delta # difference is centred sprite height else: # Changed from crouched back to upright self.image = self.upright y -= self.height_delta # difference is centred-sprite height self.crouched = crouch; self.rect = self.image.get_rect() self.rect.center = ( x, y ) def update( self ): pass ### MAIN # Open the window pygame.init() WINDOW = pygame.display.set_mode( ( WINDOW_WIDTH, WINDOW_HEIGHT ), pygame.HWSURFACE|pygame.DOUBLEBUF|pygame.RESIZABLE ) SPRITES = pygame.sprite.Group() pygame.display.set_caption("Coiled Spring") # Add a sprite spring = SpringSprite() SPRITES.add( spring ) clock = pygame.time.Clock() done = False # Main loop while not done: for event in pygame.event.get(): if ( event.type == pygame.QUIT ): done = True elif ( event.type == pygame.VIDEORESIZE ): WINDOW_WIDTH = event.w WINDOW_HEIGHT = event.h WINDOW = pygame.display.set_mode( ( WINDOW_WIDTH, WINDOW_HEIGHT ), pygame.HWSURFACE|pygame.DOUBLEBUF|pygame.RESIZABLE ) # Movement keys keys = pygame.key.get_pressed() if ( keys[pygame.K_UP] ): spring.crouch( False ) # Upright elif ( keys[pygame.K_DOWN] ): spring.crouch( True ) # Compressed WINDOW.fill( GREY ) SPRITES.draw( WINDOW ) pygame.display.update() pygame.display.flip() clock.tick_busy_loop(60) pygame.quit() $directors数组的内容是什么样的?他们只是用ID填充数组吗?如果是,则可以尝试执行$genres子句,而不必遍历所有项目:

whereIn
相关问题