Laravel 3 Schema Table Column Collation

前端 未结 5 2108
耶瑟儿~
耶瑟儿~ 2021-02-06 19:44

I\'m learning laravel, and I\'m stuck on a simple process. I want the tables to be generated as UTF-8 but varchar and text fields are like latin-1.

Schema section in gui

相关标签:
5条回答
  • 2021-02-06 20:12

    Seems not implement actually for individual schema build in Laravel 3 master. (find nothing in source code)

    I think you need to do this manually ( try with raw query )

    0 讨论(0)
  • 2021-02-06 20:15

    I'm stuck on the same, I guess there is no way in Laravel to change/set collation of the charset. But you can change the default collation for charset in your my.ini/my.cnf of your MySQL Server!

    [mysqld]
    #...
    collation-server = utf8_unicode_ci
    #...
    
    0 讨论(0)
  • 2021-02-06 20:18

    Here is my solution

    1.add public $charset; in the laravel/database/schema/table.php under public $engine; 2.replace the function create in laravel/database/schema/grammars/mysql.php like this

    public function create(Table $table, Fluent $command)
    {
        $columns = implode(', ', $this->columns($table));
    
        // First we will generate the base table creation statement. Other than auto
        // incrementing keys, no indexes will be created during the first creation
        // of the table as they're added in separate commands.
        $sql = 'CREATE TABLE '.$this->wrap($table).' ('.$columns.')';
    
        if ( ! is_null($table->engine))
        {
            $sql .= ' ENGINE = '.$table->engine;
        }
        if ( ! is_null($table->charset))
        {
            $sql.="DEFAULT CHARSET=".$table->charset;
        }
        return $sql;
    }
    

    3.now you can set any charset in your migration php such as $table->charset='utf8';

    0 讨论(0)
  • 2021-02-06 20:23

    Just solved it, (using mysql 5.5 (5.5.29)) with Linux Mint 13 Mate (based on Ubuntu 12.04 LTS)

    I added these lines on /etc/mysqld/my.cnf

    [client]
    default-character-set = utf8
    
    [mysqld]
    init_connect='SET collation_connection = utf8_unicode_ci'
    character-set-server = utf8
    collation-server = utf8_unicode_ci
    

    This way, SQL queries worked on shell as it should, but on laravel or phpmyadmin etc, they didn't work. So I did this:

    I opened /etc/apache2/conf.d/charset and removed the ; from this line:

    AddDefaultCharset UTF-8
    

    Then I restarted apache2 and mysql, now it works as it should.

    Later Edit: That GitHub Core Hack works like a treat. I ended up doing it.

    0 讨论(0)
  • 2021-02-06 20:24

    Support for MySQL character sets and collation has been added to Laravel 4 . Check this example.

    https://github.com/laravel/laravel/pull/897

    0 讨论(0)
提交回复
热议问题