MySQL - внешние ключи (FK) = 0

StalkerClasses

Новичок
Сегодня начал работать с миграциями и связями в Laravel и обратил внимание что при создании связей колонок с FK
Код:
        Schema::table('technologies', function (Blueprint $table) {
            $table->unsignedBigInteger('user_id')->nullable()->after('parent_id');
            $table->index('user_id', 'technology_user_idx');
            $table->foreign('user_id', 'technology_user_fk')->on('users')->references('id');
        });
нет возможности в записях задать user_id=0.
Есть возможность создавать только user_id=null

Можно ли как-то делать user_id=0?
 

StalkerClasses

Новичок
Спрошу даже по другому - у меня вся выборка идет:

->where('parent_id', '=', intval($pid));

Соответственно intval не преобразует 0 в null...
Как быть? Везде нужно тогда менять и подстраивать вот этот where под Null...
 

WMix

герр M:)ller
Партнер клуба
очень странно иметь 0, это 1000 раз аукнется

пиши так
Код:
if($pid) $x->where('parent_id', '=', intval($pid));
 

AmdY

Пью пиво
Команда форума
Зачем тебе вообще интвал, прелесть билдеров и плейсхолдеров как раз в том, что не надо заморачиваться.

п.с. Просто интересно, из какого ты региона России, твой рост и вес? Мы тут с друзьями обсуждаем одну теорию заговоров.
 

StalkerClasses

Новичок
PHP:
    /**
     * Scope a query
     *
     * @param \Illuminate\Database\Eloquent\Builder $query
     * @param null|int $parentId
     * @return \Illuminate\Database\Eloquent\Builder
     */
    public function scopeCustomWhereParentId($query, $parentId)
    {
        if (intval($parentId) > 0) {
            return $query->where('parent_id', '=', $parentId);
        }
        return $query->whereNull('parent_id');
    }
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Ссылочная целостность я понял.
Нифига ты не понял, null - это некое "незначение", "отсутствующее значение", "неинициализированная переменная", называй как хочется. А вот 0 - конкретное число такое себе, как 1 или -13

Поэтому при указании null в качестве значения поля в FK - это привязка "ни-к-чему", то есть отсутствие связи
 

StalkerClasses

Новичок
Нифига ты не понял, null - это некое "незначение", "отсутствующее значение", "неинициализированная переменная", называй как хочется. А вот 0 - конкретное число такое себе, как 1 или -13

Поэтому при указании null в качестве значения поля в FK - это привязка "ни-к-чему", то есть отсутствие связи
Все я правильно понял
Null пусто
0 запись , но у меня нет корневой записи

У меня null это корень

Maptex.ru

Php parent_id null
MySQL parent_id null
 
Сверху