Laravel Eloquent ManyToMany得到最多

时间:2015-12-30 15:15:09

标签: mysql laravel

我构建了一个数据透视表,其中包含我要关联的表的ID。当我拥有特定项目的ID时,我现在想要获取保存在数据透视表中的此项目的最新条目。例如:

Table 1: Tickets
Table 2: Status
Table 3: Ticket_Status (Pivot)

如果我在数据透视表中添加一个新条目,我会这样:

枢轴

ticketId,statusId

1, 2

1, 3

2, 1

现在我想在Ticket Id 1的数据透视图中收到最新状态,所以我希望获得票证1的statusId 3.但是我如何在Laravel中执行此操作?< / p>

创建数据透视表的条目:

public function attachDispatchStatus($id) {
    $this->status()->attach($id);
    $this->touch();
}

// set fields on the eloquent object and save to database
// raise event that the incident was created.
public function createDispatch($command) {

    // Get BodyContent from POST Request
    $this->dispatchReference = $command->dispatchReference;
    $this->incidentReference = $command->incidentReference;

    // Create new Dispatch
    $dispatch = Dispatch::create(array(
        'dispatch_reference' => $this->dispatchReference,
        'incident_reference' => $this->incidentReference
    ));
    $dispatchStatus = DispatchStatus::where('status', '=', 'processing')->first();
    $dispatch->attachDispatchStatus($dispatchStatus->id);

    return $this;
}

1 个答案:

答案 0 :(得分:0)

在编辑门票时,为什么不使用Laravel 5中提供的updateExistingPivot($roleId, $attributes);

这将解决您的问题并使您的数据库更轻:)

查看Larvel Doc以获取有关数据透视表的一些示例。

如果您不想这样做(因为您想保留您输入的历史记录),我认为您必须在数据透视表中添加dateTime字段...然后,只需订购按日期,你会没事的。