Database Laravel 3模式表列排序规则

Database Laravel 3模式表列排序规则,database,database-schema,laravel,database-migration,laravel-3,Database,Database Schema,Laravel,Database Migration,Laravel 3,我在学习拉威尔,我被困在一个简单的过程中。我希望表生成为UTF-8,但varchar和文本字段类似于拉丁语-1 根本没有帮助。我发现,但它也不起作用(抛出错误) 我有这样一个模式: <?php class Create_Authors_Table { /** * Make changes to the database. * * @return void */ public function up() {

我在学习拉威尔,我被困在一个简单的过程中。我希望表生成为UTF-8,但varchar和文本字段类似于拉丁语-1

根本没有帮助。我发现,但它也不起作用(抛出错误)

我有这样一个模式:

<?php

class Create_Authors_Table {

    /**
     * Make changes to the database.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('authors',function($table){
         //$table->charset('utf8'); //does not work
         //$table->collate('utf8_general_ci'); //does not work

         $table->increments('id');
         $table->string('name')->charset('utf8'); //adding ->collate('utf8_general_ci') does not work
         $table->text('bio')->charset('utf8');
         $table->timestamps();
        });
    }

    /**
     * Revert the changes to the database.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('authors');
    }

}
但这正是我需要的:

CREATE TABLE IF NOT EXISTS `authors` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(200) NOT NULL,
  `bio` text NOT NULL,
  `created_at` datetime NOT NULL,
  `updated_at` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
我甚至把
collation
键放在我的应用程序/config/database.php中

'mysql' => array(
    'driver'   => 'mysql',
    'host'     => '',
    'database' => '',
    'username' => '',
    'password' => '',
    'charset'  => 'utf8',
    'collation'=> 'utf8_unicode_ci', //this line was not there out of the box, googling provided me this
    'prefix'   => '',
),
我遗漏了什么,我该如何修复


谢谢,

对于Laravel 3 master中的单个模式构建,似乎实际上并没有实现。(在源代码中找不到任何内容)


我认为您需要手动执行此操作(试用)

对于Laravel3 master中的单个模式构建,似乎实际上并没有实现。(在源代码中找不到任何内容)


我认为您需要手动执行此操作(尝试使用)

我仍然坚持这一点,我想在Laravel中无法更改/设置字符集的排序规则。但是您可以在MySQL服务器的
my.ini/my.cnf
中更改字符集的默认排序规则

[mysqld]
#...
collation-server = utf8_unicode_ci
#...

我仍然坚持这一点,我想在Laravel中没有办法更改/设置字符集的排序规则。但是您可以在MySQL服务器的
my.ini/my.cnf
中更改字符集的默认排序规则

[mysqld]
#...
collation-server = utf8_unicode_ci
#...
刚刚用Linux Mint 13 Mate(基于Ubuntu12.04 LTS)解决了这个问题(使用mysql 5.5(5.5.29))

我在/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
通过这种方式,SQL查询在shell上正常工作,但在laravel或phpmyadmin等上却无法正常工作。所以我这样做了:

我打开/etc/apache2/conf.d/charset并删除了文件;从这一行:

AddDefaultCharset UTF-8
然后我重新启动了apache2和mysql,现在它可以正常工作了

后期编辑:工作起来就像一种享受。我最终做到了。

刚刚用Linux Mint 13 Mate(基于Ubuntu 12.04 LTS)解决了这个问题(使用mysql 5.5(5.5.29))

我在/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
通过这种方式,SQL查询在shell上正常工作,但在laravel或phpmyadmin等上却无法正常工作。所以我这样做了:

我打开/etc/apache2/conf.d/charset并删除了文件;从这一行:

AddDefaultCharset UTF-8
然后我重新启动了apache2和mysql,现在它可以正常工作了

后期编辑:工作起来就像一种享受。最后我做了。这是我的解决方案

1.添加
public$charsetpublic$engine下的laravel/database/schema/table.php中的code>
2.替换laravel/database/schema/grammars/mysql.php中的create函数,如下所示

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.现在您可以在迁移php中设置任何字符集,例如
$table->charset='utf8'

这是我的解决方案

1.添加
public$charsetpublic$engine下的laravel/database/schema/table.php中的code>
2.替换laravel/database/schema/grammars/mysql.php中的create函数,如下所示

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.现在您可以在迁移php中设置任何字符集,例如
$table->charset='utf8'

MySQL字符集和
排序规则的支持已添加到
Laravel 4
。 检查这个例子


MySQL字符集和
排序规则的支持已添加到
Laravel 4
。 检查这个例子


是的,但这个问题是在没有Laravel 4的时候问的:)是的,但这个问题是在没有Laravel 4的时候问的:)你知道,我喜欢你的建议,直到我记得我在使用composer和Git存储库。呸。不过谢谢你的建议!:)你知道,我喜欢你的建议,直到我记得我在使用composer和Git存储库。呸。不过谢谢你的建议!:)