为了账号安全,请及时绑定邮箱和手机立即绑定

array_merge(): 参数 #2 不是 sidefilter 上的数组

array_merge(): 参数 #2 不是 sidefilter 上的数组

PHP
烙印99 2023-04-21 14:06:58
我在一个问题上遇到了麻烦。在侧边栏过滤器功能中,当我单击复选框时,它将正确显示列表。但是当我取消选中复选框时,它将显示“array_merge(): Argument #2 is not an array”检查元素时显示此错误。当我点击复选框时,它会生成这个 url "http://abc.local/genre-tags/?id%5B%5D=31" 。当我取消选中复选框时,它会显示错误的 url“http://abc.local/genre-tags/”。以下是控制器和js代码。public function genresFilter ()    {        $sortBy = Input::get('sortBy', 'id');        $dir    = Input::get('direction', 'desc');        $orderBy = [                        'tracks'=>[   'order_by'=>$sortBy, 'direction'=>$dir ]                    ];        $id = Input::get('id');        $category = Category::where('slug','music-genre')->first();        $tag = Tag::with('tracks','elements')->where('category_id', $category->id)->whereIn('id', $id)->get();        echo "<pre>";        print_r($tag->toArray());        die();                $this->layout->content = View::make('public.tags.genres', compact('tag'));    }//Sidebar Filter Genre Tracks$(document).ready(function () {    $('.genreTag').on('change', function (e)    {                $('input.filter-playlist, .popularGenreTag, .mood-emotion, .production-type, .vocals, .all-tracks, .last-year, .last-month, .last-week, .last-day').each(function() {            var $this = $(this);            $this.prop('checked', false);            $this.parent().find('> div').removeClass('chk-checked').addClass('chk-unchecked');        });        e.preventDefault();        id = [];        $('.genreTag:checked').each(function()        {            id.push($(this).attr('id'));        });
查看完整描述

1 回答

?
冉冉说

TA贡献1877条经验 获得超1个赞

我认为你的控制器有问题:你有 whereIn 查询需要在第二个参数上传递数组。但是你的 id 是空的,为什么它会给出这样的错误。尝试将代码更改为以下将起作用。


public function genresFilter ()

    {

        $sortBy = Input::get('sortBy', 'id');

        $dir    = Input::get('direction', 'desc');


        $orderBy = [

                        'tracks'=>[   'order_by'=>$sortBy, 'direction'=>$dir ]

                    ];


        $id = Input::get('id');


        // check if id is not array, then give empty array

        if(!is_array($id)) $id = [];


        $category = Category::where('slug','music-genre')->first();


        $tag = Tag::with('tracks','elements')->where('category_id', $category->id)->whereIn('id', $id)->get();

        echo "<pre>";

        print_r($tag->toArray());

        die();


        $this->layout->content = View::make('public.tags.genres', compact('tag'));

    }


解决方案 2

public function genresFilter ()

    {

        $sortBy = Input::get('sortBy', 'id');

        $dir    = Input::get('direction', 'desc');


        $orderBy = [

                        'tracks'=>[   'order_by'=>$sortBy, 'direction'=>$dir ]

                    ];


        $id = Input::get('id');


        $category = Category::where('slug','music-genre')->first();


        $tag = Tag::with('tracks','elements')->where('category_id', $category->id);

        

        // if id is not null and and array then we do filter

        if($id != null && is_array($id)) {

           $tag->whereIn('id', $id);

        }


        $tag->get();


        echo "<pre>";

        print_r($tag->toArray());

        die();


        $this->layout->content = View::make('public.tags.genres', compact('tag'));

    }


查看完整回答
反对 回复 2023-04-21
  • 1 回答
  • 0 关注
  • 104 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信