[英]How to insert data into a pivot table with columns belonging to same model in Laravel?
我有一个基本上适合被阻止用户的阻止模型。 它有一个target_id
和sender_id
,它们都是用户表中的ID。 当用户想要阻止另一个用户时,如何向该数据透视表添加数据? 我的关系方法应该是什么样的?
由于target_id和sender_id都是users
表中的字段,因此必须以这种方式定义您的关系。
class User {
public function blocks() {
return $this->belongsToMany('App\User','blocked_users','sender_id','target_id')->withPivot(['id']);
}
public function blockedBy() {
return $this->belongsToMany('App\User','blocked_users','target_id','sender_id')->withPivot(['id']);
}
}
在这里, blocked_users
是表的名称。
因此,要阻止用户,您可以执行以下操作:-
//User who is going to block
$user = User::find($id);
$inputs = [$target_user_id];
$user->blocks()->attach($inputs);
//or you can use,
$user->blocks()->sync($inputs, false);
当忽略旧的同步行并附加新的行时,将使用上述同步中的false。
要获取被该特定用户阻止的用户列表,您可以执行以下操作:-
$user = User::find($id);
$user->blocks;
并获取被该特定用户阻止的用户列表
$user = User::find($id);
$user->blockedBy;
谢谢,
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.