Eloquent:查询Laravel中的字段长度

时间:2016-05-24 09:49:32

标签: php laravel laravel-5 eloquent

我想在Laravel(有效的sqlite查询)中做类似的事情:

select * from 'tbUsers' where  length(name)>50;

我试过

User::with('Permissons')->where('LENGTH(name)','>','50')->get();

但似乎没有工作........

注意:其他查询无问题:

User::with('Permissons')->where('active','=','1')->get();

4 个答案:

答案 0 :(得分:14)

试试这个 whereRaw( string $sql, array $bindings = array(), string $boolean = 'and')

User::with('Permissons')->whereRaw('LENGTH(name) > 50')->get();

答案 1 :(得分:3)

使用whereRaw

User::with('Permissons')->whereRaw('LENGTH(name) > ?', [50])->get();

答案 2 :(得分:1)

在测试中,您尝试过Testing,但这会转换为字符串,这意味着select语句变得更像:

'LENGTH(name)'

哪个不好。为了停止将其视为字符串,您需要让where()知道您输入的是原始sql,您可以使用select * from 'tbUsers' where 'LENGTH(name)' > 50;

DB::raw

答案 3 :(得分:0)

不是使用简单的LENGTH(name),而是使用char_length(name)来获取字符串中字符的长度。 LENGTH()返回以字节为单位的字符串长度。 CHAR_LENGTH()返回以字符为单位的字符串长度。

例如:

LENGTH('déjà vu')  => 9
CHAR_LENGTH('déjà vu') => 7