Laravel 5.3,PHP 5.6 新鮮laravel new
項目,最小配置。Laravel ORM數組到字符串轉換
我做了一個簡單的遷移和模型,並試圖通過php artisan tinker
將數據種入數據。
我的遷移是這樣的:
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreatesFooTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('foo', function (Blueprint $table) {
$table->increments('id');
$table->string('foo', 20);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('foo');
}
}
當我運行php artisan migrate
數據庫填充就好了。
相應的模式很簡單:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Foo extends Model
{
protected $table = 'foo';
protected $fillable = ['foo'];
}
我有一個ModelFactory還有:
$factory->define(App\Foo::class, function (Faker\Generator $faker) {
return [
'foo' => $faker->email,
];
});
廷克做什麼,我想,當我嘗試make
從工廠傳單它應該做的:
>>> factory('App\Foo')->make();
=> App\Foo {#696
foo: "[email protected]",
但是,當我嘗試擊中數據庫時,Eloquent無法將第e查詢值中的一個字符串:
>>> $foo = factory('App\Foo')->create();
Illuminate\Database\QueryException with message 'SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'foo' at row 1 (SQL: insert into `foo` (`foo`, `updated_at`, `created_at`) values ([email protected], 2016-09-06 23:59:03, 2016-09-06 23:59:03))'
在Google上沒有這樣的內容。有任何想法嗎?
(編輯顯示相同的問題,一個更簡單的例子)
你確定這不是因爲你沒有設置對模型的可填寫字段? – pseudoanime
@pseudoanime剛剛添加了$ fillable字段(上面已編輯)。同樣的結果。 –