我正在查看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',
];
还有一些我不明白的。例如:&
,|
,^
,<<
,>>
,~
,~*
,!~
,!~*
。
有人能告诉我一个如何使用它们的例子吗?
由于
答案 0 :(得分:9)
就像其他评论者提到的那样,那些是按位运算符。这里记录了PHP的按位运算符:http://php.net/manual/en/language.operators.bitwise.php
<强>实施例强>
&
是bitwise AND运营商。
按位AND采用两个等长二进制表示和 对每对相应的执行逻辑AND操作 比特,乘以它们。因此,如果两个位都处于比较位置 为1,结果二进制表示中的位为1(1×1 = 1);否则,结果为0(1×0 = 0且0×0 = 0)
10&amp; 10 = 10(所有十进制表示)。怎么样? 10是1010二进制。
1010
and 1010
--------
1010
请注意,仅当同一列中的顶部和底部数字均为1时,结果才为1.
PHP的写作方式:
<?php
echo 10 & 10;
?>
Result: 10
它的实际用途是什么?我们举一个例子:有4套双门。两扇门必须同时打开才能让人通过。门户开放时间为1号。闭门号为2号。
1010
表示第一扇门打开,第二扇门关闭,第三扇门打开,第四扇门关闭。当所有门关闭时,它们看起来像这样:
0000 <-- first set of doors
0000 <-- second set of doors
为了允许某人通过最左边的门,门应该是这样的:
0001
0001
这一切都很好,但有一种更快的方式来注释。按位运算符&amp ;.我们做&amp;在两个门之间得到1的结果。因此,如果数据存储为1,我们知道最左边的门是打开的。
要打开最左边的门,组合必须是:
1000
1000
按位运算符的结果是十进制8.使用calculator like the one on miniwebtool运行一些数学运算。
另一方面,当门打开和关闭一整天时,可以记录4组门中的任何一扇门都打开时的情况。对于一个简单的问题,这只是一个冗长的答案。
答案 1 :(得分:4)
将此作为对原始问题的评论发布:
他们是按位运算符。 Here就是他们所做的(这是javascript实现)。
答案 2 :(得分:2)
它们是laravel的where()
方法中使用的按位运算符,它们作为oprerators提供,您可以找到有关这些opreat的更多详细信息Here