Laravel multiple query (PHP/MySQL)

Solution:

Try this code :

$id[] = 1;

$assigns =  array_unique(Assignation::whereNotIn('category_id', $id)->pluck('product_id')->toArray());
$products = Product::whereIn('id', $assigns)->orderBy('id', 'Asc')->get();

return $products;

Edit:

Added checking the category if exists before getting data, so the code should be:

$category = Category::findOrFail($id);
$assigns =  array_unique(Assignation::where('category_id', $id)->pluck('product_id')->toArray());
$variants = Variant::whereNotIn('id', $assigns)->orderBy('id_product', 'Asc')->get();

Answer

Solution:

Te @Pejman Kheyri answer is not what I want, but he helps me to find the solution:

public function getCategoryVariantAssignation($id){
        $category = Category::findOrFail($id);
        $assignations = array_unique(Assignation::where('category_id', $id)->pluck('product_id')->toArray());
        $no_variants_assigned = Variant::whereNotIn('id', $assignations)->orderBy('id_product', 'Asc')->get();
        $data = ['category' => $category, 'variants' => $no_variants_assigned];
        return $data;
}

Source