gpt4 book ai didi

php - Laravel 4 : Pivot Table, 或 ID

转载 作者:行者123 更新时间:2023-11-29 08:12:07 25 4
gpt4 key购买 nike

users
id
email
password
created_at
updated_at

tasks
id
name
created_at
updated_at

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

Many-to-many relations are a more complicated relationship type. An example of such a relationship is a user with many roles, where the roles are also shared by other users. For example, many users may have the role of "Admin".

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

最佳答案

正确,如果每个任务仅由单个用户拥有,那么向任务表添加 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 指示用户是否是所有者或该项目已分配给他们。然后,您可以更改 User 模型任务方法以返回 $this->hasMany 关系。

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

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

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

关于php - Laravel 4 : Pivot Table, 或 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21361086/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com