2017-01-03 112 views
0

我想知道是否有某种方式来获取数据透视表中两列的值,基于我给出的唯一增量ID每一行。Laravel - 从数据透视表列中获取值,使用数据透视表唯一行ID

我有一个工作模型,一个位置模型和一个应用程序模型。

作业和位置与数据透视表“job_location”有多对多的关系。它包含的两个外键是job_id和location_id。不过,我也给每行添加了一个唯一的递增ID jobloc_id。

如果我只有jobloc_id,我该如何查看其他两列的值?

$jobLoc = $location->jobs->wherePivot('jobloc_id', '=', 1); 
return $jobLoc->job_id; 

返回“方法wherePivot不存在”即使我已经看到了使用它的人引用。我所拥有的仅仅是jobloc_id,并且正在尝试根据此查找其他两个值,以便我可以完全加载作业和位置以从中提取属性。

任何指针将不胜感激。这是在Laravel 5.3中。

+0

数据透视表并不意味着有一个ID列,你可能试图做一些你不应该做的事情。 – AntoineB

+0

在数据库理论中,数据透视表没有ID列,如@AntoineB所示, 相反,他们的主键是两个关系参与者的组合。 您可以使用两种奇怪的解决方案,提升Job&Location与实体之间的关系,并在其上有两个N-1关系,一个与Job和另一个与位置。 或简单地使用Laravel查询生成器 –

+2

@AntoineB在数据透视表上拥有唯一的ID列没有任何问题。这不是必需的,但它可能有用。我经历过的多个导游都表示他们还会加入一个。我本质上是试图访问<->位置与一个数字的组合。 – Octoxan

回答

0

如果你加入ID来透视表(jobloc_id为例),你想通过ID来获得行,只需使用查询生成器:

DB::table('job_location')->where('jobloc_id', 1)->first(); 

这是做到这一点的最快simpliest的方式,当你数据透视表中有唯一的行ID。

+1

试过这个,它工作。然而,结束了为数据透视表创建一个模型,这给了我更多的控制权。 – Octoxan

相关问题