雄辩的"在哪里/或在哪里"组合失败



我有一个问题的解决方案,但它一直困扰着我,我希望不需要解决方案,因为这个问题毫无意义。

我有一个表链接;就好像2个用户被链接一样。表格很简单:iduser_1_iduser_2_idstatuscreated。。。

我希望两个用户都能够在一个简单的控制器销毁方法中删除:

通常我写:

Links::where(['user_1_id' => auth()->id(),'user_2_id' => $user->id])
->orWhere(['user_1_id' => $user->id, 'user_2_id' => auth()->id()])
->delete();

通过url解析$user类。。。

我目前的解决方案包括呼叫

Links::where([...])->delete() 

一次,如果它等于0,则用用户的ids反转再次调用它;它有效。。。

orWhere方法只是返回并删除所有创建的链接。。。通常user_2_id总是相同的,user_1_id从99-108变化…为什么会这样?

public function scopeBetween($query, $sender, $recipient)
{
$query->where([
['sender_id', $sender->id],
['recipient_id', $recipient->id]
])->orWhere([
['sender_id', $recipient->id],
['recipient_id', $sender->id]
]);
}

发现这是最好的解决方案。。。创建一个作用域函数,该函数以发送方和接收方为参数,以确定是否创建了友谊

猜测查询中有语法错误,请尝试

Links::where([
['user_1_id', auth()->id()],
['user_2_id', $user->id]
])
->orWhere([
['user_1_id', $user->id],
['user_2_id', auth()->id()]
])
->delete();

相关内容

  • 没有找到相关文章

最新更新