Laravel migration boolean field created in Db like tiny integer

17,877

Tinyint is the same as boolean. Tinyint is an integer of size equal to 1 octet. When creating the column set as boolean the the db creates it as a tinyint with a size of 1 bit. Thus making it's possible values 0and 1 which is a boolean.


From MySQL documentation

BOOL, BOOLEAN

These types are synonyms for TINYINT(1). A value of zero is considered false. Nonzero values are considered true

Numeric Type Overview

Share:
17,877
Stefano Maglione
Author by

Stefano Maglione

Senior Software Engineer experienced in software analysis, design and development.

Updated on June 23, 2022

Comments

  • Stefano Maglione
    Stefano Maglione almost 2 years

    I wrote a migration in Laravel:

     Schema::create('test', function (Blueprint $table) {
            //
            $table->increments('id');
            $table->string('city','30')->unique();
            $table->string('car','30')->unique();
            $table->boolean('required');
            $table->string('street','100')->nullable();
            $table->json('files');
            $table->timestamp('created_at');
        });
    

    the field required is defined as boolean but in the db (MySql) is created as tinyint. How is it possible?

  • Blip
    Blip over 5 years
    This question is not related to mysql. It is related to laravel migration
  • tomas.lang
    tomas.lang almost 5 years
    Also there is problem that TINYINT(1) doesn't have a size of 1 bit but 1 byte! Only BIT(1) have really size of a 1 bit
  • Henk Poley
    Henk Poley over 3 years
    Isn't it not even 1 byte? But something like "in case you export it to a mainframe compatible format, this will be printed as 1 character". E.g. trimmed to the last decimal character: 0 to 9. You won't see that during normal queries.