【问题标题】:laravel pivot table with additional parameters带有附加参数的 laravel 数据透视表
【发布时间】:2014-10-13 04:18:09
【问题描述】:

我正在构建一个跟踪项目的 laravel 应用程序。用户可以定义任务并将它们附加到项目中。

我希望用户能够拥有一个可重复用于多个项目的任务列表。使用链接项目和任务的数据透视表非常简单:

public function up()
{
    Schema::create('project_task', function($table)
    {
        $table->increments('id');
        $table->integer('project_id');
        $table->integer('task_id');
        $table->timestamps();
    });
}

但是,我希望用户能够根据项目为任务设置不同的截止日期。因此,在项目 1 中,任务 A 将在一周后到期。在项目 2 中,任务 A 将在一个月后到期。

存储这些类型值的最佳表架构是什么?是否需要另一个将任务参数链接到项目 ID 的数据透视表?我不确定如何处理。

感谢您的意见。

编辑:我使用的是 Eloquent ORM,因此枢轴行从未真正暴露,它只是抓取与 Project 关联的 Task 对象。

【问题讨论】:

    标签: php laravel laravel-4


    【解决方案1】:

    您可以简单地将due_date 字段添加到project_task 表中。因此,总共您将拥有三个表 project、task 和 project_task(您的问题中有)

    这样您将定义一次task,并可以为每个项目分配不同的截止日期

    编辑

    您可以定义包含due_date 的自定义数据透视模型,请参阅Defining A Custom Pivot Model

    【讨论】:

    • @iTech-- 我考虑过这一点,但由于模型级别定义的关系,当您使用 Eloquent 系统时,它永远不会真正提取数据透视表数据 - 它会抓取数据透视表的对象是指向,即实际的Task 而不是project_task 行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-10
    • 1970-01-01
    • 2023-01-09
    • 2018-08-31
    相关资源
    最近更新 更多