我有一个问题的解决方案,但它一直困扰着我,我希望不需要解决方案,因为这个问题毫无意义。
我有一个表链接;就好像2个用户被链接一样。表格很简单:id
、user_1_id
、user_2_id
、status
、created
。。。
我希望两个用户都能够在一个简单的控制器销毁方法中删除:
通常我写:
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,则用用户的id
s反转再次调用它;它有效。。。
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();