Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在laravel中允许多个多对多条目?_Php_Laravel 5_Many To Many_Relationship - Fatal编程技术网

Php 如何在laravel中允许多个多对多条目?

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

在我的Laravel5应用程序中,我有用户、任务和用户任务。用户可以多次完成任务:

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即可。因此,在您的情况下,不必更改关系。