gpt4 book ai didi

php - orWhere vs Where Laravel 5.1

转载 作者:行者123 更新时间:2023-12-01 12:30:16 26 4
gpt4 key购买 nike

我有以下代码:

$results = \DB::table('pack')
->Join('users as u1', 'u1.id', '=', 'pack.userid')
->Join('skills as s1', 's1.packid', '=', 'pack.packid')
->where('u_status', '=', "0")
->where('pack.amount', '<', 100)
->where('pack.amount', '>', 10)
->where('pack_status', '=', "2")
->where('pack.title', 'LIKE', "%$text%")
->orWhere('pack.description', 'LIKE', "%$text%")
->orWhere('pack.skills', 'LIKE', "%$text%")
->orWhere('s1.name', 'LIKE', "%$text%")
->orderBy('packid', 'desc')
->orderBy('featured', 'desc')
->groupBy('packid')
->take(40)
->get();
return $results;

除了 ->where('amount', '<', 100),一切正常和 ->where('amount', '>', 10) .

它不排除其中任何一个,并显示高于和低于我设定的数字的金额。如果我删除 orWhere()它工作正常。

我在用 orWhere()where()正确吗?

最佳答案

问题是您在没有正确分组的情况下组合了 OR 和 AND。考虑以下条件:

$bool1 = false && false || true; // =true
$bool2 = false && (false || true); // =false

因此,要使其正常工作,您需要正确地对条件进行分组。您可以通过将闭包传递给 where() 来对条件进行分组。或 orWhere()方法。我猜你想把 $text 分组条件在一起,所以你的代码看起来像:
$results = \DB::table('pack')
->join('users as u1', 'u1.id', '=', 'pack.userid')
->join('skills as s1', 's1.packid', '=', 'pack.packid')
->where('u_status', '=', "0")
->where('pack.amount', '<', 100)
->where('pack.amount', '>', 10)
->where('pack_status', '=', "2")
->where(function($query) use ($text) {
$query->where('pack.title', 'LIKE', "%$text%")
->orWhere('pack.description', 'LIKE', "%$text%")
->orWhere('pack.skills', 'LIKE', "%$text%")
->orWhere('s1.name', 'LIKE', "%$text%");
})
->orderBy('packid', 'desc')
->orderBy('featured', 'desc')
->groupBy('packid')
->take(40)
->get();

return $results;

关于php - orWhere vs Where Laravel 5.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34845374/

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