Multiple relatedTo conditions using a combination of "and" and "or"
It seems that the relatedTo is by default an or, so you only need to define and once when the rest will be considered or e.g.
$query = Entry::find();

// Convert these IDs into Entries/Category models first.
$foodTypes = [1, 3, 5];
$weathers = [7, 4];

$query-&gt;relateTo([
    'and',
    ['targetElement' =&gt; $foodTypes],
    ['targetElement' =&gt; $weathers],
]);

return $query-&gt;all();

This will make sure each array passed into relateTo is considered an and group but the items within that are considered as an or group.