【问题标题】:How do I create different many to many relationships for the same two tables using Eloquent in Laravel如何在 Laravel 中使用 Eloquent 为相同的两个表创建不同的多对多关系
【发布时间】:2023-03-23 05:31:01
【问题描述】:
我有 2 个表“用户”和“内容”。
用户可以收藏内容,因此我使用数据透视表 User_Content 来建立用户与他们收藏的内容之间的多对多关系。
这很好。
用户还可以购买内容。这将是与上述(User_Content)相同的关系,但将是完全不同的数据。
我如何设置这样的关系,其中表之间的关系相同但内容不同 - 这可以在 Laravel 中使用 Eloquent 成功完成吗?
或者我应该以完全不同的方式来解决这个问题?
【问题讨论】:
标签:
php
mysql
laravel-4
many-to-many
eloquent
【解决方案1】:
只需设置一个包含 user_id 和 content_id 字段的 user_purchase 和 user_favorite 表
然后设置模型
作为
class User extends Eloquent{
public function purchases()
{
return $this->belongsToMany('Content','user_purchase');
}
public function favorites()
{
return $this->belongsToMany('Content','user_favorite');
}
}
class Content extends Eloquent{
public function buyers()
{
return $this->belongsToMany('User','user_purchase');
}
public function favorites()
{
return $this->belongsToMany('User','user_favorite');
}
}
第二列表示要检查哪个表的多对多关系