Laravel 5.2 - filter with an array

I am doing a search filter, I have 3 inputs "municipality", "category", "keyword", I'm trying to insert a value into an array. IF input is not empty. eg:

public function search(Request $request)
    {


        $filter = array(["'visible', '=' , 1"],["'expire_date', '>', $current"]);

        if(!empty($termn)){
                $filter[] =["'title', 'LIKE' , '%'.$termn.'%'"];
        }
        if(!empty($request->input('category'))){
                $filter[] = ["'category_id', '=', $input_category"];
        }
        if(!empty($request->input('municipality_id')))  {
                $filter[] = ["'municipality_id', '=', $input_municipality"];
        }

        dd($filter);

        $posts = Post::where($filter)->get();
}

But it is not filtered well, dd ($ filter) returns like this: enter image description here

Perhaps the structure of the array is out of order, I also tried: the search query laravel 5.2 but it does not work. WITHOUT dd ($ filter) I have this error:

SQLSTATE [42000]: Syntax error or access violation: 1064 You have an error in the SQL syntax; check the manual that corresponds to MariaDB server version for the right syntax to use near .. is null and `'municipality_id', '=', 1` is null)' at line 1 (SQL: select * from `posts` where (`'visible', '=' , 1` is null and `'expire_date', '>', 2016-10-29 13:29:30` is null and `'category_id', '=', Scegli una categoria`.. .is null and 'municipality_id', '=', 1null))

Thank you for your help!

+4
2

where. . :

, ( ) :

public function search(Request $request)
    {
        $current = Carbon::now();
        $current = new Carbon();
        $termn = $request->input('keyword');
        $input_category = $request->input('category');
        $input_municipality = $request->input('municipality_id');


        $posts = Post::where('visible', 1)->where('expire_date', '>', $current);

        if(!empty($termn)){
                $posts->where('title', 'LIKE' , '%'.$termn.'%');
        }
        if(!empty($request->input('category'))){
                $posts->where('category_id', '=', $input_category);
        }
        if(!empty($request->input('municipality_id')))  {
                $posts->where('municipality_id', '=', $input_municipality);
        }

        $post_results = $posts->get();
        dd($posts_results);
}

, ( ), :

$users = DB::table('posts')->where([
    ['visible', '=', '1'],
    ['expire_date', '>', $current],
    // ...
])->get();
+1

where() query builder :

$query = Post::where('visible', 1)->where('expire_date', '>', $current);

if(!empty($termn)){
        $query->where('title', 'LIKE', '%'.$termn.'%')
}
if(!empty($request->input('category'))){
        $query->where('category_id', $input_category)
}
if(!empty($request->input('municipality_id')))  {
        $query->where('municipality_id', $input_municipality)
}

$posts = $query->get();
+1

Source: https://habr.com/ru/post/1659256/


All Articles