1、多对多关联
1.插入 attach
$user = App\User::find(1);
$user->roles()->attach($roleId);
# user实例
# roles userModel定义的role关联表方法
# roleId role表id主键
附加关联关系到模型,还可以以数组形式传递额外被插入数据到中间表:
$user->roles()->attach($roleId, ['expires' => $expires]);
还接收数组形式的ID输入:
$user = App\User::find(1);
$user->roles()->attach([
1 => ['expires' => $expires],
2 => ['expires' => $expires]
]);
注意:默认不维护created_at, updated_at字段。 需要额外处理。
1. 插入
$result = $order->Tags()->attach($tagIds);
2. orderModel
/**
* order-tag关系表
* @return mixed
*/
public function Tags()
{
return $this->belongsToMany(Tag::class, 'dayi_order_tag')->whereNull('dayi_order_tag.deleted_at')->withTimestamps();
}
/**
* 获取当前时间
* @return int
*/
public function freshTimestamp() {
return time();
}
# 1. withTimestamps() 维护created_at,updated_at字段
# 2. freashTimestamp() 设置时间格式为时间戳。用于created_at,updated_at字段赋值
2.软删除
当然,有时候有必要从用户中移除角色,要移除一个多对多关联记录,使用 detach 方法。detach 方法将会从中间表中移除相应的记录;但是,两个模型在数据库中都保持不变:
只删除中间记录表,两边表不变
// 从指定用户中移除角色...
$user->roles()->detach($roleId);
// 从指定用户移除所有角色...
$user->roles()->detach();
// 数组形式
$user->roles()->detach([1, 2, 3]);
注意:
使用attach()