Laravel seed для dateTime не работает

У меня есть таблица миграции:

 public function up()
{
Schema::create('order_statuses', function (Blueprint $table) {
$table->integer('order_id')->unsigned();
$table->integer('status_id')->unsigned();
$table->dateTime('created_at')->default(DB::raw('CURRENT_TIMESTAMP'));

$table->foreign('order_id')->references('id')->on('orders');
$table->foreign('status_id')->references('id')->on('order_status_names');
});
}

Теперь я хотел бы сделать семена, но у меня есть семена для этого, но у меня есть проблема, когда я хочу иметь разные даты. Вот мои семена:

use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Carbon\Carbon;

class OrderStatusesTableSeeder extends Seeder
{
public function run()
{
DB::statement('SET FOREIGN_KEY_CHECKS=0;');
DB::table('order_statuses')->truncate();
DB::statement('SET FOREIGN_KEY_CHECKS=1;');

DB::table('order_statuses')->insert([
[
'order_id' => 1,
'status_id' => 1,
'created_at' => \Carbon\Carbon::createFromDate(2014,07,22)->toDateTimeString()
],[
'order_id' => 2,
'status_id' => 2,
],[
'order_id' => 3,
'status_id' => 3,
],[
'order_id' => 1,
'status_id' => 2,
]
]
);
}
}

У меня ошибка в моем терминале:

[Illuminate\Database\QueryException]
SQLSTATE[21S01]: Insert value list does not match column list: 1136
Column
count doesn't match value count at row 2 (SQL: insert into
`order_statuses`
(`created_at`, `order_id`, `status_id`) values (2014-07-22 11:32:07,
1, 1)
, (2, 2), (3, 3), (1, 2))

Есть ли возможность исправить это? Карбон находится в LAravel или я должен это установить?

1

Решение

[Осветите \ Database \ QueryException] SQLSTATE [21S01]: список значений вставки не соответствует списку столбцов

Означает, что вы передаете неправильный номер аргумента для последних трех строк:

DB::table('order_statuses')->insert(
[
[
'order_id' => 1,
'status_id' => 1,
'created_at' => \Carbon\Carbon::createFromDate(2014,07,22)->toDateTimeString()
],[
'order_id' => 2,
'status_id' => 2,
'created_at' => \Carbon\Carbon::createFromDate(2014,07,22)->toDateTimeString()
],[
'order_id' => 3,
'status_id' => 3,
'created_at' => \Carbon\Carbon::createFromDate(2014,07,22)->toDateTimeString()
],[
'order_id' => 1,
'status_id' => 2,
'created_at' => \Carbon\Carbon::createFromDate(2014,07,22)->toDateTimeString()
]
]
);

Вы можете пройти null как значение для created_at если столбец допускает обнуляемость.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]