【发布时间】:2018-10-19 07:14:38
【问题描述】:
我正在尝试重命名数据库中user 表的时间戳列(created_at 和updated_at)。我已经看到了this answer,但是当我像这样覆盖CREATED_AT 和UPDATED_AD 常量时:
class User extends Authenticatable
{
const CREATED_AT = 'user_creation_date';
const UPDATED_AT = 'user_update_date';
...
}
它所做的只是重命名User 模型的属性,即$user->user_creation_date 和$user->user_update_date。数据库列保持不变。如何在保留自动更新功能的同时重命名数据库的列?
感谢您的帮助。
【问题讨论】:
-
实用问题:你为什么要这个?您的
user上的created_at标记非常明显,表明当时创建了用户记录。在所有表中保持这些列名一致也便于以后查询。 -
这只是在 SQL 查询中进行连接时更方便,而不是
table1.updated_at = table2.updated_at你只需table1_update_date = table2_update_date。 -
这实际上是 1 个字符的差异,对吧?无论如何,alistaircol 的答案可能是最好的答案。
-
是的,我会测试它。正如你所说,这不是字符差异的问题,而是框架处理的问题。
->where('table1_column','table2_column')比DB::raw('table1.column = table2.column')更容易。我不会选择老板让我做什么。 -
DB::table('table1')->join('table2', 'table1.created_at', '=', 'table2_created_at')->select('*')->get()? (或左连接:DB::table('table1')->leftJoin('table2', 'table1.created_at', '=', 'table2_created_at')->get())不要试图妨碍您,您可能有充分的理由!我只是很难看出解决你的问题到底有什么好处;)
标签: laravel sql-timestamp