我这里有一个问题,我用查询构建器进行了搜索,数据库状态列是 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