Laravel中的所有SQL运算符是什么?

Ale*_*lex 5 php mysql laravel eloquent

我正在浏览Laravel的源代码,我发现了很多针对Eloquent的SQL运算符,我想知道它们中的一些是什么以及如何使用它们.

遗憾的是,我没有设法找到任何文档.

这是我发现的运营商vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php:

protected $operators = [
    '=', '<', '>', '<=', '>=', '<>', '!=',
    'like', 'like binary', 'not like', 'between', 'ilike',
    '&', '|', '^', '<<', '>>',
    'rlike', 'regexp', 'not regexp',
    '~', '~*', '!~', '!~*', 'similar to',
    'not similar to',
];
Run Code Online (Sandbox Code Playgroud)

还有一堆我不明白的.例如:&,|,^,<<,>>,~,~*,!~,!~*.

谁能告诉我一个如何使用它们的例子?

谢谢

zed*_*xus 9

就像其他评论者提到的那样,那些是按位运算符.这里记录了PHP的按位运算符:http://php.net/manual/en/language.operators.bitwise.php

例子

&是一个按位AND运算符.

按位AND采用两个相等长度的二进制表示,并通过将它们相乘对每对相应位执行逻辑AND运算.因此,如果比较位置中的两个比特都是1,则得到的二进制表示中的比特是1(1×1 = 1); 否则,结果为0(1×0 = 0且0×0 = 0)

10&10 = 10(所有十进制表示).怎么样?10是1010二进制.

    1010
and 1010
--------
    1010
Run Code Online (Sandbox Code Playgroud)

请注意,仅当同一列中的顶部和底部数字均为1时,结果才为1.

PHP的写作方式:

<?php
echo 10 & 10;
?>
Result: 10
Run Code Online (Sandbox Code Playgroud)

它的实际用途是什么?我们举一个例子:有4套双门.两扇门必须同时打开才能让人通过.打开的门是1号.闭门是2号.

1010表示第一扇门打开,第二扇门打开,第三扇门打开,第四扇门打开.当所有门关闭时,它们看起来像这样:

0000  <-- first set of doors
0000  <-- second set of doors
Run Code Online (Sandbox Code Playgroud)

为了让某人通过最左边的门,门应该是这样的:

0001
0001
Run Code Online (Sandbox Code Playgroud)

这一切都很好,但有一种更快的方式来注释.按位运算符&.我们在两个门之间进行并得到1的结果.因此,如果数据存储为1,我们知道最左边的门是打开的.

要打开最左边的门,组合必须是:

1000
1000
Run Code Online (Sandbox Code Playgroud)

按位运算符的结果是十进制8.使用miniwebtool上的计算器来运行一些数学运算.

另一方面,当门整天打开和关闭时,可以记录4组门中的任何一扇门都打开时的情况.对于一个简单的问题,这只是一个冗长的答案.