Laravel 4:数据透视表或ID

哥伦布
users
id
email
password
created_at
updated_at

tasks
id
name
created_at
updated_at

我应该创建数据透视表(users_tasks),还是仅user_idtasks表中放置一个字段我想使用Eloquent驱动程序,但是我不确定哪种方法最适合此类关系...

多对多关系是更复杂的关系类型。这种关系的一个示例是具有多个角色的用户,其中这些角色也由其他用户共享。例如,许多用户可能具有“管理员”角色。

从Laravel文档中的引用可以看出,在这种情况下,不需要数据透视表...因为每个数据透视表task仅由一个人拥有user...是正确的思维方式吗?

Glendaviesnz

正确,如果每个任务仅由一个用户拥有,那么将user_id列添加到任务表将是最简单的选项,并且将在模型中建立关系,如下所示:

class User extends Eloquent {

    public function tasks()
    {
        return $this->hasMany('Task');
    }

}

class Task extends Eloquent {

    public function user()
    {
        return $this->belongsTo('User');
    }

}

编辑

如果您打算在任何阶段允许多个用户访问任务,例如。如果您希望所有者能够将任务分配给其他人,则最好使用数据透视表。您可以在以后添加一个,但是如果这样做的话,可以更清洁地提前进行添加。除了提供关系之外,数据透视表还可以包括用户的状态/访问详细信息。然后,您将添加一个task_user表,如下所示:

task_user
    -task_id
    -user_id
    -status_id

使用status_id指示用户是所有者还是已将项目分配给他们。然后,您可以更改用户模型任务方法以返回$ this-> hasMany关系。

如果要向数据透视表添加的不仅仅是任务和用户ID,则需要在关系定义中包括数据透视表字段的详细信息,例如。

return $this->belongsToMany('Task')->withPivot('status_id');

参见http://laravel.com/docs/eloquent#working-with-pivot-tables

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

数据透视表Laravel 4

来自分类Dev

Laravel数据透视表ID列

来自分类Dev

Laravel 4-数据透视表

来自分类Dev

雄辩的表和数据透视表在Laravel 4中

来自分类Dev

雄辩的表和数据透视表在Laravel 4中

来自分类Dev

在Laravel中通过ID更新数据透视表

来自分类Dev

Laravel 4-多对多-数据透视表未更新

来自分类Dev

Laravel 4:在数据透视表中排序

来自分类Dev

Laravel 4:在数据透视表中排序

来自分类Dev

laravel 4无法检索所有结果?数据透视表

来自分类Dev

在laravel 4中存储与数据透视表的关系

来自分类Dev

Laravel-使用数据透视表唯一的行ID从数据透视表列中获取值

来自分类Dev

laravel数据透视表独特

来自分类Dev

Laravel 与数据透视表的关系

来自分类Dev

Laravel Eloquent - 数据透视表

来自分类Dev

从laravel中的数据透视表访问数据

来自分类Dev

向数据透视表Laravel添加值

来自分类Dev

Laravel includesToMany排除数据透视表

来自分类Dev

Laravel中的数据透视表选择

来自分类Dev

在laravel数据透视表上过滤

来自分类Dev

Laravel数据透视表不复数

来自分类Dev

Laravel雄辩的关系和数据透视表

来自分类Dev

如何创建数据透视表laravel?

来自分类Dev

laravel嵌套关系数据透视表

来自分类Dev

在laravel数据透视表上进行过滤

来自分类Dev

Laravel数据透视表n:m关系

来自分类Dev

Laravel总结数据透视表中的字段

来自分类Dev

laravel 5如何创建数据透视表

来自分类Dev

Laravel雄辩地与数据透视表