Eloquent ORM 使用 Eloquent 模型管理关联关系

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()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值