600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > laravel mysql like_Laravel数据库查询中对 like 的值进行转义

laravel mysql like_Laravel数据库查询中对 like 的值进行转义

时间:2018-12-11 12:25:14

相关推荐

laravel mysql like_Laravel数据库查询中对 like 的值进行转义

Laravel数据库查询中对 like 的值进行转义

龙行PHP-8-205500评论

在laravel开发中,如果我们用到like模糊搜索$where[]=['title','like','%'.$data['title'].'%'];

上面这种在laravel中会报数据错误。

参考各种实例,可以这样做functionlike_str($str)

{

$like_escape_char='!';

returnstr_replace([$like_escape_char,'%','_'],[

$like_escape_char.$like_escape_char,

$like_escape_char.'%',

$like_escape_char.'_',

],$str);

}

先用函数对keyword进行处理避免%和_把所有数据查出来

然后如下使用$query->where('title','like',"%".like_str($keyword)."%");

或者还可以使用trait<?php

namespaceApp\Models\Traits;

traitLikeScope

{

/**

*@param\Illuminate\Database\Eloquent\Builder$query

*@param$column

*@param$value

*@param$side

*@param$isNotLike

*@param$isAnd

*@return\Illuminate\Database\Eloquent\Builder

*/

publicfunctionscopeLike($query,$column,$value,$side='both',

$isNotLike=false,$isAnd=true)

{

$operator=$isNotLike?'notlike':'like';

$escape_like_str=function($str){

$like_escape_char='!';

returnstr_replace([$like_escape_char,'%','_'],[

$like_escape_char.$like_escape_char,

$like_escape_char.'%',

$like_escape_char.'_',

],$str);

};

switch($side){

case'none':

$value=$escape_like_str($value);

break;

case'before':

case'left':

$value="%{$escape_like_str($value)}";

break;

case'after':

case'right':

$value="{$escape_like_str($value)}%";

break;

case'both':

case'all':

default:

$value="%{$escape_like_str($value)}%";

break;

}

return$isAnd?$query->where($column,$operator,$value):

$query->orWhere($column,$operator,$value);

}

publicfunctionscopeOrLike($query,$column,$value,$side='both',

$isNotLike=false)

{

return$query->like($column,$value,$side,$isNotLike,false);

}

publicfunctionscopeNotLike($query,$column,$value,$side='both',$isAnd=true)

{

return$query->like($column,$value,$side,true,$isAnd);

}

publicfunctionscopeOrNotLike($query,$column,$value,$side='both')

{

return$query->like($column,$value,$side,true,false);

}

}

如下使用<?php

useApp\Models\Traits\LikeScope;

useIlluminate\Database\Eloquent\Model;

classMyModelextendsModel

{

useLikeScope;

publicfunctionscopeSearch($query,$keyword)

{

return$query->like('title',$keyword);

}

}

评论一下

赞助站长

赞助站长X

版权申明:此文如未标注转载均为本站原创,自由转载请表明出处《龙行博客》。

本文网址:/375.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。