Laravel 数据透视表时间戳

Posted

技术标签:

【中文标题】Laravel 数据透视表时间戳【英文标题】:Laravel pivot table timestamps 【发布时间】:2019-03-15 20:56:15 【问题描述】:

我有一个关于 Laravel 数据透视表及其时间戳(created_at/updated_at)的小问题。

场景是:

将许多工单分配给多个用户,并查看何时分配。

我想保留created_at 时间戳,但想在创建迁移时去掉updated_at 列。

在我的研究中,我偶然发现了在模型中声明 public $timestamps = false; 的解决方案。但是数据透视表没有模型——它会同时禁用created_atupdated_at

除此之外,我没有找到任何符合我的情况的结果。

有人可以在这里启发我吗? 谢谢

【问题讨论】:

【参考方案1】:

更新

从 Laravel 5 开始,您可以解决这个问题,并像这样使用 withTimestamps() 在数据透视表中维护您的时间戳。

return $this->belongsToMany('App\Role')->withTimestamps();

https://laravel.com/docs/5.1/eloquent-relationships#many-to-many

【讨论】:

这应该是正确的答案!,谢谢【参考方案2】:

但是数据透视表没有模型

这不是真的。来自 Laravel 文档:

如果您想定义一个自定义模型来表示 您的关系的中间表,您可以调用using 方法 在定义关系时。自定义多对多枢轴模型 应该扩展Illuminate\Database\Eloquent\Relations\Pivot 类 而自定义多态多对多枢轴模型应该扩展 Illuminate\Database\Eloquent\Relations\Morphpivot 班级。

为此,只需为您的数据透视表创建一个模型,然后其余步骤与通常的模型几乎相同。

您可以将const UPDATED_AT = null; 设置为仅使用created_at。更多详情请看SO thread

【讨论】:

谢谢大佬,快速解答!又是我的搜索技术太差了!对不起:)

以上是关于Laravel 数据透视表时间戳的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 如何创建数据透视表?

如何创建数据透视表 laravel?

试图在资源 Laravel 中返​​回数据透视表

可以将数据透视表与 laravel 5.5 中的另一个数据透视表相关联吗?

Laravel Eloquent - 查询数据透视表

Laravel 渴望加载数据透视表关系