Laravel就像在查询生成器中一样



我这里有一个问题,我用查询构建器进行了搜索,数据库状态列是 varchar,它是活动的,非活动的,禁用的

这里的问题,如果我寻找活动状态,那么也会出现非活动状态

$vendor  = DB::table('client_vendor as cv')
->leftJoin('vendors as fv','fv.id','=','cv.vendor_id')
->select('cv.*','fv.*','cv.status')
->where('cv.status', 'LIKE', '%' . 'active' . '%')
->get();

在这里我可能不会更改数据库中的数据类型

试试这个

$vendor  = DB::table('client_vendor as cv')
->leftJoin('vendors as fv','fv.id','=','cv.vendor_id')
->where('cv.status','=','active')
->get();

编辑

$vendor  = DB::table('client_vendor as cv')
->join('vendors as fv','fv.id','=','cv.vendor_id')
->select('cv.*','fv.*')
->where('cv.status','active')  // or  ->where('cv.status','=','active')
->get();

那是因为LIKE '%active%'也适合inactive。特殊的字符%可以用任何字符串替换。在您的情况下,您应该只使用=,而不是LIKE。它也会快得多,特别是如果您将 KEY/INDEX 添加到数据库中的该列。

在那里你可以找到LIKE运算符解释:https://www.w3schools.com/sql/sql_like.asp

最新更新