使用关系表从数据库中获取记录时出现问题

Posted

技术标签:

【中文标题】使用关系表从数据库中获取记录时出现问题【英文标题】:Problem when getting records from database with relationship table 【发布时间】:2020-05-15 03:28:45 【问题描述】:

我无法使用中间表将照片与标签关联起来。

在下面的示例中,如何在 Laravel 中使用 Eloquent 关系方法选择属于标签 1 的所有照片?

我有这些表:

-Photos Table

 |  id  |    name    | description |
    1     photo1.png      ....
    2     photo2.png      ....
    3     photo3.png      ....
-Tags Table

 |  id  |    name    |
    1      Aesthetic
    2        Dark
-Tags Relations

 | id | tag_id | photo_id |
   1      1         3
   2      1         2
   3      2         1

【问题讨论】:

【参考方案1】:

首先,您需要确保 Photos 和 Tags 表都定义了关系。

在照片模型下你应该有以下功能:

public function tags() 
    return $this->belongsToMany(
        Tag::class,
        "photos_tags", // the name of the pivot table
        "photo_id",
        "tag_id"
    );

在标签模型下,您应该具有以下功能:

public function photos() 
    return $this->belongsToMany(
        Photo::class,
        "tags_photos", // the name of the pivot table
        "tag_id",
        "photo_id"
    );

现在要访问与 id 1 的照片相关的所有标签,您可以调用以下代码:

Photo::findOrFail(1)->tags()->get();

您可以对特定标签执行相同操作以获取其所有照片。

Tag::findOrFail(1)->photos()->get();

希望这会引导您实现您的愿望。

【讨论】:

很高兴听到这个消息!祝你进一步发展好运!^^

以上是关于使用关系表从数据库中获取记录时出现问题的主要内容,如果未能解决你的问题,请参考以下文章