一些关系表应该有自己的模型吗?
Should some relationship tables have their own models?
我正在 PHP 中使用 MVC 框架编写 API,我正在使用 Eloquent ORM。
我的应用程序有一些最终通过关系表链接的模型,但打算以单独、分散的方式创建。
这些关系表应该有自己的模型,还是相关的模型应该有创建链接的方法?
对于 Eloquent,对于具有多对多关系的中间或枢轴 table,您不需要创建额外的模型。
您应该始终使用 belongsToMany() 方法为相关模型设置关系,记录在此处:https://laravel.com/docs/5.3/eloquent-relationships#many-to-many
class User extends Model
{
/**
* The roles that belong to the user.
*/
public function roles()
{
return $this->belongsToMany('App\Role');
}
}
他们有多种方法可以使用此关系向数据透视表添加或更新项目 table,包括附加、分离或同步,在此处记录:https://laravel.com/docs/5.3/eloquent-relationships#updating-many-to-many-relationships
$user = App\User::find(1);
$user->roles()->attach($roleId);
您还可以将数据添加到额外字段:
$user->roles()->attach($roleId, ['expires' => $expires]);
数据透视表上的额外字段 table 当您拥有与关系相关但与相关模型无关的数据(如时间戳)时很重要。
我能想到的一个例子是,如果您想维护商店经理的历史记录。您不仅需要 store_id 和 manager_id,还需要 started_at 和 ended_at 时间戳。这将允许您查看谁现在在管理一家商店,以及谁在过去管理一家商店。
使用 Eloquent,这些类型的额外字段不需要它们自己的模型,可以通过上面记录的各种方法访问它们。
我正在 PHP 中使用 MVC 框架编写 API,我正在使用 Eloquent ORM。
我的应用程序有一些最终通过关系表链接的模型,但打算以单独、分散的方式创建。
这些关系表应该有自己的模型,还是相关的模型应该有创建链接的方法?
对于 Eloquent,对于具有多对多关系的中间或枢轴 table,您不需要创建额外的模型。
您应该始终使用 belongsToMany() 方法为相关模型设置关系,记录在此处:https://laravel.com/docs/5.3/eloquent-relationships#many-to-many
class User extends Model
{
/**
* The roles that belong to the user.
*/
public function roles()
{
return $this->belongsToMany('App\Role');
}
}
他们有多种方法可以使用此关系向数据透视表添加或更新项目 table,包括附加、分离或同步,在此处记录:https://laravel.com/docs/5.3/eloquent-relationships#updating-many-to-many-relationships
$user = App\User::find(1);
$user->roles()->attach($roleId);
您还可以将数据添加到额外字段:
$user->roles()->attach($roleId, ['expires' => $expires]);
数据透视表上的额外字段 table 当您拥有与关系相关但与相关模型无关的数据(如时间戳)时很重要。
我能想到的一个例子是,如果您想维护商店经理的历史记录。您不仅需要 store_id 和 manager_id,还需要 started_at 和 ended_at 时间戳。这将允许您查看谁现在在管理一家商店,以及谁在过去管理一家商店。
使用 Eloquent,这些类型的额外字段不需要它们自己的模型,可以通过上面记录的各种方法访问它们。