I’m new to the Laravel framework and I could need a little help from you.
Could someone help me to convert this request into Eloquent ?
SELECT * FROM `non_working_days` WHERE YEAR(date) = "2021" AND (country = "Paris" OR country = "Madrid")
For the moment I have managed to find a solution but I am running as many queries as the number of parameters.
foreach ($calendar as $code) { array_push( $data, Model::query() ->whereYear('date', '=', $year) ->where('country', $code) ->get() ); }
So it comes down to doing :
SELECT * FROM `non_working_days` WHERE YEAR(date) = "2021" AND country = "Paris" SELECT * FROM `non_working_days` WHERE YEAR(date) = "2021" AND country = "Madrid"
So I don’t think it’s very efficient knowing that potentially I would have many more parameters.
Thanks
Advertisement
Answer
You can use the whereIn method:
$countries = ['Paris', 'Madrid']; // or use $calendar instead if it's an array $data = Model::query() ->whereYear('date', '=', $year) ->whereIn('country', $countries) ->get();
This should give you a query like this:
SELECT * FROM `non_working_days` WHERE YEAR(`date`) = "2021" AND `country` IN ("Paris", "Madrid");