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

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

场景是:

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

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

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

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

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

【问题讨论】:

    标签: laravel timestamp pivot


    【解决方案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

    【讨论】:

    • 谢谢大佬,快速解答!又是我的搜索技术太差了!对不起:)
    猜你喜欢
    • 1970-01-01
    • 2014-06-30
    • 1970-01-01
    • 2018-04-10
    • 2014-11-01
    • 2020-07-22
    • 1970-01-01
    • 2013-11-17
    • 2017-12-15
    相关资源
    最近更新 更多