Пустые функции не нужны. Laravel достаточно умен, чтобы работать со смешанным набором отношений с ограничениями и без них.
Entry::with(array(
'foo' => function($query) use ($id) {
$query->where('user_id', $id);
},
'author',
'lastModifiedBy'
))->...;
Вот как Laravel различает два:
в Illuminate\Database\Eloquent\Builder@parseRelations
foreach ($relations as $name => $constraints)
{
// If the "relation" value is actually a numeric key, we can assume that no
// constraints have been specified for the eager load and we'll just put
// an empty Closure with the loader so that we can treat all the same.
if (is_numeric($name))
{
$f = function() {};
list($name, $constraints) = array($constraints, $f);
}
Как описывает комментарий, Laravel фактически добавляет пустое замыкание сам по себе, если ключ элемента массива является числовым.
Это Unresolved references
инспекции. Вы можете отключить его, выполнив:
Settings > Editor > General > Inspections > python
, затем перед ним увидите флажок.
Попробуйте проверить в диалоговом окне «Переформатировать файл» (Ctrl + Alt + Shift + L), снимите флажок «Оптимизировать импорт», если он уже установлен.
В качестве альтернативы, вы можете добавить `PyUnresolvedReferences ':
# noinspection PyUnresolvedReferences
import A
# noinspection PyUnresolvedReferences
import B
Хотя есть некоторые сообщения о проблемах со ссылкой, https://youtrack.jetbrains.com/issue/PY-19837 [ 111].