Laravel。从数据透视表中获取数据

时间:2018-09-17 21:38:58

标签: php laravel pivot

如何直接从数据透视表中获取数据(使用Laravel)?

我有模型\ App \ Model \ Orders

class Orders extends Model
{
     public function related_orders()
     {
         return $this->belongsToMany(\App\Model\Orders::class,'related_orders','order_id','related_id');
     }
}  

好的,我可以从数据透视表中获取数据

$order = \App\Model\Orders::find(1);

foreach ($order->related_orders as $related_order) {
    $related_order->pivot->related_id;
}

但是,我只需要相关的订单ID!我不想检索所有相关订单以获取一个id字段。这是不合理的。

你能帮我吗?

PS:我知道如何使用sql查询,这没问题。我想知道如何用Laravel做到这一点。

2 个答案:

答案 0 :(得分:1)

您可以尝试以下方法:

获取特定订单(在本例中为1):

$order = \App\Model\Orders::find(1);

获取上述订单的相关订单:

$relatedOrders = $order->related_orders->first();

获取ID(假设您的列为id)

return $relatedOrders->id;

答案 1 :(得分:1)

如果我理解正确的话,您想要做的事情似乎很简单。如果您想要相关订单的ID数组,请执行以下操作:

$relatedOrders = $order->related_orders->pluck('id');

让我知道这是否是您的意思,如果给出正确的结果,也许还有您想要做的事情我不理解。