2016-06-13 166 views
4

我使用Laravel和我有遷移與功能:錯誤PHP的工匠遷移laravel

public function up() 
{ 
    Schema::table('articles', function (Blueprint $table) { 
     $table->string('article_title',100)->change(); 
    }); 
} 

,當我在我的CMD做「PHP的工匠遷移」我得到錯誤:

[Doctrine\DBAL\DBALException] Unknown database type enum requested, Doctrine\DBAL\Platforms\MySqlPlatform may not support it.

我什至不使用枚舉!而且我也沒有任何其他沒有遷移並且沒有遷移的遷移。

+0

你以前創建該表?如果不是,你需要創建它Schema :: create('articles',function(Blueprint $ table){table_> string('article_title',100) - > change(); }); –

+0

我有這張表,也有這個專欄,但想要改變長度從50到100 :) – Danielius

回答

1

我相信,我以前也有這個問題。問題是提供給database migration工廠的Schema類實際上是Doctrine\DBAL\Schema類的抽象,而不是直接重複。

當你第一次運行composer install,還有,你應該安裝幾個「推薦」的依賴。沒有人做,但最終你會發現一些小的bug,並花幾個小時就可以了,才意識到嘿......也許我應該嘗試與其他可選的依賴

不要像我一樣。相反,請嘗試下面列出的內容。

您需要直接將"doctrine/dbal": "^2.5",(或讀取時存在的任何穩定版本)添加到下的composer.json文件中。

一旦你加入這行,做一個作曲家更新,然後將此行添加到您的遷移:

use Doctrine\DBAL\Schema\Schema 

這樣做了以後,你不應該看到的錯誤了。

+0

不真的幫助:/實際上它甚至不會發現 Doctrine \ DBAL \ Schema \ Schema 我已經有了教條/ dbal在我的作曲家 – Danielius

+0

@Danielius當你在你的IDE中使用Schema'時,你沒有看到它嗎?如果你檢查你的供應商目錄,它在那裏?如果沒有,那麼你需要重新安裝軟件包。 – Ohgodwhy

+0

我有供應商的教條,並在該教條文件夾我有dbal,但在它只有兩個文件夾:bin和lib,如果你問它我現在重新安裝它 – Danielius

3

該列本身不必是枚舉,但ANY列中的表不能是枚舉。

下面是從Laravel文件的重命名列部分行:

注:與枚舉列的表重命名列目前不支持。

-1

鏈接到Laravel的文檔:Changing columns。您需要學說/ DBAL添加到您的composer.json文件。

Note: Before changing a column, be sure to add the doctrine/dbal dependency to your composer.json file.

或者運行命令:

composer require doctrine/dbal 
+0

是的,正如我在上面的答案中所發佈的,我已經詳細列出了這一點。你的答案是重複的。 – Ohgodwhy