Php 如何在laravel中允许多个多对多条目?
在我的Laravel5应用程序中,我有用户、任务和用户任务。用户可以多次完成任务:Php 如何在laravel中允许多个多对多条目?,php,laravel-5,many-to-many,relationship,Php,Laravel 5,Many To Many,Relationship,在我的Laravel5应用程序中,我有用户、任务和用户任务。用户可以多次完成任务: User: id name ... Task: id name value ... UserTask: id user_id task_id completed_on 如果这是一个正常的多对多关系,我会在用户类中使用此函数: class User extends Model { // ... public function tasks(){ ret
User:
id
name
...
Task:
id
name
value
...
UserTask:
id
user_id
task_id
completed_on
如果这是一个正常的多对多关系,我会在用户类中使用此函数:
class User extends Model {
// ...
public function tasks(){
return $this->belongsToMany(Task::class, 'user_tasks', 'user_id', 'task_id');
}
}
但我相信这意味着user\u id/task\u id是user\u任务的主键。如果希望联接表中有重复的用户id/任务id条目,如何更改任务和用户之间的关系
第二个问题,如果我想要一个用户完成的所有独特任务的列表,而不管用户完成了多少次,该怎么办
编辑:对不起,我并不是说它会在这些列上放置一个唯一的键。我的意思是,在任何一对用户和任务对象之间只有一个连接的情况下,似乎应该使用belongToMany,因此在用户id/Task id可以是唯一键的情况下。
UserTask.id
应该是主键。其他的应该被索引,但不是唯一的。$this->belongToMany(任务::类,'user\u tasks','user\u id','Task\u id')
没有定义任何复合主键。如果没有明确定义复合键,Laravel只需使用id即可。因此,在您的情况下,不必更改关系。