Hi I am facing a problem with Laravel eloquent query. I have a table named as 'Offer' and it is connected to another table using relation function 'ApplyOn'. here is the code
$offer = Offer::whereHas('ApplyOn',function($query) use ($input){
$query->whereRaw("find_in_set(".$input['size_id'].",size_ids)");
})->get();
here $input['size_id'] is an array so I can't get the result using this query please help me to find out the solution.
if it is not possible with the find_in_set function then how can I solve this problem? I want to sort the data by the given array value.
The $input['size_id'] is an array. for example [1,2,3].
The table field 'size_ids' is a string value with comma-separated. for example 1,2,3,4,5
You want find all the size Ids matching with the $input['size_id'] and this is an array you can do something like
$offer = Offer::whereHas('ApplyOn', function ($query) use ($input) {
if (isset($input['size_id']) and is_array($input['size_id'])) {
$ids_to_filter = $input['size_id'];
$query->where(function ($sub) use ($ids_to_filter) {
foreach ($ids_to_filter as $value) {
$sub->where('size_ids', 'like', '%' . $value . '%');
}
});
}
})->get();
If with only ONE is a valid ApplOn use an WHERE OR
$sub->orWhere('size_ids', 'like', '%' . $value . '%');
Maybe this can help you