Php 使用";时如何更改时间戳列名;artisan迁移“;?
我正在努力更改由生成的时间戳列名Php 使用";时如何更改时间戳列名;artisan迁移“;?,php,laravel,laravel-4,Php,Laravel,Laravel 4,我正在努力更改由生成的时间戳列名 php artisan migrate 指挥部 我已经做了以下更改。当我使用Elount query builder时,它可以正确生成列名,但当我使用上面的命令时,它仍然会生成“created_at”、“updated_at”和“deleted_at”。有人能帮我吗?非常感谢 /* vendor\framework\src\Illuminate\Database\Eloquent\Model.php */ /** * The name of the "cr
php artisan migrate
指挥部
我已经做了以下更改。当我使用Elount query builder时,它可以正确生成列名,但当我使用上面的命令时,它仍然会生成“created_at”、“updated_at”和“deleted_at”。有人能帮我吗?非常感谢
/* vendor\framework\src\Illuminate\Database\Eloquent\Model.php */
/**
* The name of the "created at" column.
*
* @var string
*/
const CREATED_AT = 'datetime_created';
/**
* The name of the "updated at" column.
*
* @var string
*/
const UPDATED_AT = 'datetime_updated';
/**
* The name of the "deleted at" column.
*
* @var string
*/
const DELETED_AT = 'datetime_deleted';
另外,我知道修改“核心”不是个好主意。如果有人能告诉我扩展这些类的最佳方法,我将不胜感激。永远不要编辑
供应商
文件夹下的代码。首先,它通常(默认情况下)不随存储库携带,因此如果您或任何其他人想要在另一台机器上工作,您将丢失更改第二次,它将在您执行编写器更新时被覆盖
话虽如此,让我们开始处理这种“修改核心”的恐怖。对于illumb\Database\Eloquent\Model.php
,只需创建一个基础模型,从中扩展所有后续模型,并覆盖其中的常量:
app/models/BaseModel.php
abstract class BaseModel extends Eloquent {
/**
* The name of the "created at" column.
*
* @var string
*/
const CREATED_AT = 'datetime_created';
/**
* The name of the "updated at" column.
*
* @var string
*/
const UPDATED_AT = 'datetime_updated';
/**
* The name of the "deleted at" column.
*
* @var string
*/
const DELETED_AT = 'datetime_deleted';
}
然后,对于illumb\Database\Schema\Blueprint
案例。。。好吧,它变得血腥:
扩展。\Schema\Blueprint
,覆盖您提到的方法
扩展。\Schema\Builder
,覆盖createBlueprint
方法以使用新的Blueprint
类。
- 还可以扩展
。\Schema\MySqlBuilder
以从新的生成器
类扩展
扩展。\Connection
,覆盖getSchemaBuilder
方法以使用新的Builder
类。
- 同时扩展
。\MySqlConnection
,。\PostgresConnection
,。\SqlServerConnection
和。\SQLiteConnection
以从新的连接
类扩展
- 注意:
。\MySqlConnection
还需要扩展其getSchemaBuilder
方法,以使用新的MySqlBuilder
类
扩展。\ConnectionFactory
,覆盖createConnection
方法以使用扩展的连接
类
创建一个ServiceProvider
以将新的ConnectionFactory
类注册为新的db.factory
组件,并将其添加到app/config/app.php
文件的providers
下
因此,经过半个小时对Laravel的源代码的深入研究,我得出结论,在迁移过程中简单地执行以下操作可能会更容易:
$table->timestamp(BaseModel::CREATED_AT);
$table->timestamp(BaseModel::UPDATED_AT);
伟大的非常感谢您的回复!我真的很感谢你的帮助。由于我大约8小时前在办公室完成了工作,我可能明天只能在家里的电脑上试试。
$table->timestamp(BaseModel::CREATED_AT);
$table->timestamp(BaseModel::UPDATED_AT);