如何使用Laravel更改SQL中的列名?

时间:2016-06-07 21:12:01

标签: php database laravel-5

我一直在关注Laravel-5基础知识的https://laracasts.com系列,我对这一切都不熟悉,MySQL和框架......

我使用过' php artisan tinker'命令更改列的属性。 但我做了一个拼写错误并输入了'event_desciption'而不是' event_description' 现在每当我尝试使用$ events-> save();它给出了错误。

我给的列名称:

                        $table->increments('id');
                        $table->string('event_name');
                        $table->integer('cost');
                        $table->text('event_description');
                        $table->text('terms_and_condition');
                        $table->string('organized_by');
                        $table->timestamps();
                        $table->timestamp('published_at');

我在创建事件对象时犯的错误..     $事件;

 $events;
=> App\event {#627
     event_name: "My first evenr name",
     cost: 20,
 >event_desciption: " the event description",
 terms_and_condition: " our terms and condition",
 organized_by: "organized by us",
 published_at: Carbon\Carbon {#634
   +"date": "2016-06-07 20:17:44.000000",
   +"timezone_type": 3,
   +"timezone": "UTC",
 },
 updated_at: "2016-06-07 20:19:54",
 created_at: "2016-06-07 20:19:54,

它给出的错误:

  
    
      

$事件 - >保存();       Illuminate \ Database \ QueryException with message' SQLSTATE [42S22]:找不到列:1054未知列' event_desciption'在'字段列表' (SQL:插入eventsevent_namecostevent_desciptionterms_and_conditionorganized_bypublished_at,{{1 }},updated_at)值(我的第一个名字,20,事件描述,我们的条款和条件,由我们组织,2016-06-07 20:17:44,2016-06-07 20:19 :54,2016-06-07 20:19:54))'

    
  

如何更改列名而不创建另一个对象来执行相同的操作?

谢谢你:)

1 个答案:

答案 0 :(得分:1)

  

要重命名列,可以在Schema上使用renameColumn方法   建设者。在重命名列之前,请务必添加doctrine / dbal   依赖于您的composer.json文件。

Schema::table('users', function($table)
{
    $table->renameColumn('from', 'to');
});

这是以下页面的引用:

https://laravel.com/docs/5.0/schema#renaming-columns

因此,在您的情况下,您将要将该行代码更改为:

$table->renameColumn('event_desciption', 'event_description');

编辑:

如果表架构正确,您可能在对象中添加了错误的名称。将名为$events的{​​{1}}对象的属性更改为event_desciption

您可以通过在event_description

中再次删除和重建对象来实现此目的
php artisan tinker