【发布时间】:2017-05-17 23:32:32
【问题描述】:
我正在尝试根据我为每一行提供的唯一递增 ID 来确定是否有某种方法可以获取数据透视表中两列的值。
我有一个 Job 模型、一个 Location 模型和一个 Application 模型。
Job 和 Location 与数据透视表“job_location”具有多对多关系。它包含的两个外键是 job_id 和 location_id。但是,我还为每一行赋予了一个唯一的递增 ID,jobloc_id。
如果我只有jobloc_id,如何查看其他两列的值?
$jobLoc = $location->jobs->wherePivot('jobloc_id', '=', 1);
return $jobLoc->job_id;
返回“不存在 Pivot 的方法”,即使我已经看到使用它的人的引用。我所拥有的只是 jobloc_id,并且正在尝试基于此查找其他两个值,以便我可以完全加载 Job 和 Location 以从中提取属性。
任何指针将不胜感激。这是在 Laravel 5.3 中。
【问题讨论】:
-
数据透视表并不意味着有一个 ID 列,你可能正在尝试做一些你不应该做的事情。
-
在数据库理论中,数据透视表没有@AntoineB 所说的 ID 列,而是它们的主键是两个关系参与者的组合。您可以使用两种奇怪的解决方案,将 Job 和 Location 之间的关系提升为实体,并在其上有两个 N-1 关系,一个与 Job 相关,另一个与 Location 相关。或者干脆使用 Laravel 查询生成器
-
@AntoineB 在数据透视表上拥有唯一的 ID 列没有任何问题。这不是必需的,但它可能很有用。我经历过的多个指南都说他们仍然会添加一个。我实际上是在尝试访问工作位置与一个数字的组合。
标签: laravel laravel-5.3