用修补匠和Laravel编码

时间:2017-10-09 15:15:07

标签: php mysql laravel

我正在尝试使用修补程序来操作我的项目的表,所以,我遇到的第一个问题是我创建了一个utf8编码的数据库,之后,我运行我的迁移,然后,表创建的是使用utf8mb4_unicode_ci。它们不应该默认为utf8吗?如果是,我该如何改变?

第二个问题是,当我尝试在桌面上使用我的本地语言(巴西葡萄牙语)插入单词时,使用修补程序,即时得到由这些字符引起的错误。像这样:

Illuminate\Database\QueryException with message 'SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xA1tulo ...' for column 'title' at row 1 (SQL: insert into `posts` (`title`, `body`, `updated_at`, `created_at`) values (Título 1, Corpo do primeiro post, 2017-10-09 14:58:40, 2017-10-09 14:58:40))'

我是否必须修补我的当地语言,或者我是否必须对项目进行任何改变?

我的帖子迁移代码:

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreatePostsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            // $table->charset = 'utf8';
            // $table->collation = 'utf8_general_ci';
            $table->increments('id');
            $table->string('title');
            $table->mediumText('body');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('posts');
    }
}

关于修补我正在这样做:

$post = new App\post();
$post->title = 'Título 1';
$post->body = 'Corpo do primeiro post';
$post->save();

这是我第一次使用Laravel,所以我有点失落。

1 个答案:

答案 0 :(得分:0)

尝试将这些行添加到您的" config / database.php'文件,然后重试。

'charset'   => 'utf8',
'collation' => 'utf8_unicode_ci'