Заставить IDE / linter игнорировать, казалось бы, неиспользуемый импорт

Пустые функции не нужны. 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 фактически добавляет пустое замыкание сам по себе, если ключ элемента массива является числовым.

0
задан DavidG 16 January 2019 в 10:12
поделиться

2 ответа

Это Unresolved references инспекции. Вы можете отключить его, выполнив:

Settings > Editor > General > Inspections > python 

, затем перед ним увидите флажок.

0
ответ дан Mehrdad Pedramfar 16 January 2019 в 10:12
поделиться

Попробуйте проверить в диалоговом окне «Переформатировать файл» (Ctrl + Alt + Shift + L), снимите флажок «Оптимизировать импорт», если он уже установлен.

В качестве альтернативы, вы можете добавить `PyUnresolvedReferences ':

# noinspection PyUnresolvedReferences
import A

# noinspection PyUnresolvedReferences
import B

Хотя есть некоторые сообщения о проблемах со ссылкой, https://youtrack.jetbrains.com/issue/PY-19837 [ 111].

0
ответ дан specbug 16 January 2019 в 10:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: