我有一个阻止模型,基本上是阻止用户。它有target_id
和sender_id
,两者都是来自用户表的ID。当用户想要阻止其他用户时,如何将数据添加到此数据透视表?我的关系方法应该是什么样的?
答案 0 :(得分:1)
由于 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;
谢谢,