gpt4 book ai didi

mysql - Laravel SQL 查询。帮我

转载 作者:行者123 更新时间:2023-11-29 07:16:28 26 4
gpt4 key购买 nike

我有一个名为“Offers”的表,其中包含 3 种(公共(public)、请求、私有(private))类型的数据。现在我想直接向用户终端公众展示并请求报价。私有(private)优惠不会显示,但当管理员将在新表 (offer_access) 中添加 user_id 和 offer_id 时,私有(private)优惠应该仅对这些用户可用。

$offer = Offer::where('status', 'public')->orWhere('status', 'request')->latest()->get();

我写了这篇文章,并为用户端获得了公开和私有(private)报价。现在我想在“OfferAccess”表上可用时向用户显示私有(private)优惠。

那么现在,我该如何编写 SQL 查询呢?

最佳答案

你可以试试吹:

$offer = Offer::whereIn('status', ['public', 'request'])
->orWhere(function($query) {
$query->where('status', 'private')
->whereHas('OfferAccess', function($qry) {
$qry->where('user_id', auth()->user()->id);
});
})->get();

如果您只需要最新的结果可以使用->latest()->get() 而不是只使用->get()。此外,如果您需要为当前登录用户以外的任何其他用户获取它,则需要将 user_id 传递给闭包函数。所以你需要使用更新的 orWhere 就像:

->orWhere(function($query) use ($user_id) {
$query->where('status', 'private')
->whereHas('OfferAccess', function($qry) use ($user_id) {
$qry->where('user_id', $user_id);
});
})

它应该会给你想要的结果。

关于mysql - Laravel SQL 查询。帮我,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59009937/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com