Eloquent 的 where/orWhere 组合失败
Eloquent's where/orWhere combination failing
我的问题有解决方案,但它困扰着我,希望不需要解决方案,因为问题毫无意义。
我有一个table链接;好像有 2 个用户链接在一起。 table 很简单:
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
class
我当前的解决方案包括调用
Links::where([...])->delete()
一次,如果等于0,则将用户的id
倒过来再调用一次;并且有效...
orWhere
方法仅 returns 并删除所有建立的链接...通常 user_2_id
始终相同,而 user_1_id
从 99-108 变化。 .. 为什么会这样?
猜想你的查询有语法错误,试试
Links::where([
['user_1_id', auth()->id()],
['user_2_id', $user->id]
])
->orWhere([
['user_1_id', $user->id],
['user_2_id', auth()->id()]
])
->delete();
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]
]);
}
发现这是最好的解决方案...创建一个范围函数,该函数将发送者和接收者作为参数来确定是否已建立友谊
我的问题有解决方案,但它困扰着我,希望不需要解决方案,因为问题毫无意义。
我有一个table链接;好像有 2 个用户链接在一起。 table 很简单:
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
class
我当前的解决方案包括调用
Links::where([...])->delete()
一次,如果等于0,则将用户的id
倒过来再调用一次;并且有效...
orWhere
方法仅 returns 并删除所有建立的链接...通常 user_2_id
始终相同,而 user_1_id
从 99-108 变化。 .. 为什么会这样?
猜想你的查询有语法错误,试试
Links::where([
['user_1_id', auth()->id()],
['user_2_id', $user->id]
])
->orWhere([
['user_1_id', $user->id],
['user_2_id', auth()->id()]
])
->delete();
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]
]);
}
发现这是最好的解决方案...创建一个范围函数,该函数将发送者和接收者作为参数来确定是否已建立友谊