PHP Version 7.2.10 Laravel Version 5.6.39
I have something like this:
$statuses = [4, 5, 6, 7, 14, 15, 16, 17, 18, 19];
$notStatues = [8, 9, 10, 11, 12, 13];
$posts = Post::query();
if ( isset( $queryParams['category'] ) ){
$posts = $posts->where('post_category', '=', $queryParams['category']);
}
if ( isset( $queryParams['language'] ) ){
$posts = $posts->where('post_language', '=', $queryParams['language']);
}
// $posts = $posts->jsonNotContains($statuses);
$posts = $posts->whereJsonContains('post_status_ids', $statuses[0])
->orWhereJsonContains('post_status_ids', $statuses[1])
->orWhereJsonContains('post_status_ids', $statuses[2])
->orWhereJsonContains('post_status_ids', $statuses[3])
->orWhereJsonContains('post_status_ids', $statuses[4])
->orWhereJsonContains('post_status_ids', $statuses[5])
->orWhereJsonContains('post_status_ids', $statuses[6])
->orWhereJsonContains('post_status_ids', $statuses[7])
->orWhereJsonContains('post_status_ids', $statuses[8])
->orWhereJsonContains('post_status_ids', $statuses[9]);
$posts->whereJsonDoesntContain('post_status_ids', $notStatues[0])
->whereJsonDoesntContain('post_status_ids', $notStatues[1])
->whereJsonDoesntContain('post_status_ids', $notStatues[2])
->whereJsonDoesntContain('post_status_ids', $notStatues[3])
->whereJsonDoesntContain('post_status_ids', $notStatues[4])
->whereJsonDoesntContain('post_status_ids', $notStatues[5]);
$posts = $posts->orderBy('post_priority', 'desc')->paginate(10);
return $posts;
What is the better way to implement it, for the current code I am even unable to filter out posts that belong to $notStatuses
.