from __future__ import absolute_import
является значением по умолчанию для Python 3. Поэтому оператор from calendar import isleap
импортирует модуль верхнего уровня calendar
.
Если вы видите другие результаты; это означает, что вы не используете Python 3 или пытаетесь запустить модуль python изнутри пакета в качестве скрипта (в самом каталоге myproject
находится sys.path
). Если последний, то ваш calendar.py
становится модулем верхнего уровня и (из-за того, что текущий каталог появляется перед каталогами stdlib в sys.path
), from calendar import isleap
импортирует calendar.py
из текущего каталога. «Никогда не добавляйте каталог пакета или любой каталог внутри пакета непосредственно к пути Python»
Чтобы этого избежать, не запускайте модули из пакетов python прямо, например, do не делаем это: cd myproject; python foo.py
. Сделайте это вместо: python -mmyproject.foo
(или вы можете определить, какие сценарии должны быть запущены в setup.py
или , создать аналогичный скрипт вручную: from myproject import foo; foo.main()
).
Если вы хотите запустить пакет Python в качестве сценария, тогда создайте myproject/__main__.py
, затем запустите python -mmyproject
.
Если вы хотите сделать относительный импорт в Python 3; сделайте это явно, например, в myproject/foo.py
:
from .calendar import something
Или выполните абсолютный импорт:
from myproject.calendar import something
Используйте insertGetId()
вместо insert()
, а затем find()
модель. Например:
$id = DB::table('users')->insertGetId(['name' => 'Ivanka', 'email' => 'ivanka@ivanka.com']);
$user = User::find($id);
Когда вы обновляете, у вас есть id
, поэтому просто find()
это: User::find($id)
.
Документация, объясняющая, как работает insertGetId()
: https://laravel.com/docs/5.7/queries#inserts