Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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
Laravel多对多关系查询_Laravel_Eloquent_Many To Many - Fatal编程技术网

Laravel多对多关系查询

Laravel多对多关系查询,laravel,eloquent,many-to-many,Laravel,Eloquent,Many To Many,我正在构建一个Laravel应用程序,其中包含一个用户表和一个活动表,以及活动和用户之间的多对多关系,这些关系通过一个名为assignments的数据透视表实现: 用户:id 活动:id 分配:id,活动id,用户id 我需要记录用户每次完成活动的时间。用户可以多次完成相同的活动。我正试图决定在数据库中对此进行建模的最佳方法。我所能看到的选项有: 表完成:id、赋值\u id 第二个数据透视表完成:id、活动id、用户id 我可以创建迁移等,但是我正在努力使用模型类及其关系方法。特别是,对于

我正在构建一个Laravel应用程序,其中包含一个用户表和一个活动表,以及活动和用户之间的多对多关系,这些关系通过一个名为assignments的数据透视表实现:

  • 用户:id
  • 活动:id
  • 分配:id,活动id,用户id
我需要记录用户每次完成活动的时间。用户可以多次完成相同的活动。我正试图决定在数据库中对此进行建模的最佳方法。我所能看到的选项有:

  • 表完成:id、赋值\u id
  • 第二个数据透视表完成:id、活动id、用户id

  • 我可以创建迁移等,但是我正在努力使用模型类及其关系方法。特别是,对于上面的第一个选项,我将如何定义所需的模型类和关系方法?

    好的,除了活动跟踪之外,几乎所有内容都已排序。因此,以下是我的建议:

    用户表

    列id、名称、电子邮件等

    活动表

    列id、名称等

    用户活动表(透视)

    具有列id、用户id、活动id等 此表将包含用户和活动之间的多对多映射

    活动跟踪

    列id、用户活动id、状态、更新时间等
    在这里,您可以使用状态的整数值来表示完成,比如说1。使用更新的和创建的,您可以跟踪活动的开始和完成时间。

    创建
    活动用户
    表,只需添加
    活动id
    用户id
    。此操作不需要id列。然后将这些代码添加到用户模型:

    public function activity()
    {
        return $this->belongsToMany('App\Activity', 'activity_user', 'user_id', 'activity_id');
    }
    
    如果我理解正确,就不需要其他任何东西了