Я просматривал исходный код Laravel, и я нашел много SQL-операторов для Eloquent, и мне было интересно, какие из них и как их можно использовать.
К сожалению, мне не удалось найти какую-либо документацию.
Вот операторы, которые я нашел в 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', ];
И их кучка я не понимаю. Например: &
, |
, ^
, <<
, >>
, ~
, ~*
!~
!~*
.
Может ли кто-нибудь показать мне пример того, как их можно использовать?
благодаря
Как и другие комментаторы, это побитовые операторы. Побитовые операторы PHP задокументированы здесь: http://php.net/manual/en/language.operators.bitwise.php
Примеры
&
является побитовым оператором И.
Побитовое И принимает два двоичных представления равной длины и выполняет логическую операцию И на каждой паре соответствующих битов путем их умножения. Таким образом, если оба бита в сравниваемой позиции равны 1, бит в результирующем двоичном представлении равен 1 (1 × 1 = 1); в противном случае результат равен 0 (1 × 0 = 0 и 0 × 0 = 0)
10 & 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
Все в порядке, но есть более быстрый способ аннотировать это. Побитовый оператор &. Мы делаем между обеими дверями и получаем результат 1. Поэтому, если данные хранятся как 1, мы знаем, что самые левые двери были открыты.
Чтобы открыть самую левую дверь, комбинация должна быть:
1000 1000
Результат побитового оператора десятичный 8. Используйте калькулятор, как тот, что на miniwebtool, чтобы запустить математику.
С другой стороны, когда двери открываются и закрываются весь день, можно записать, когда открылись обе двери любого из 4-х дверей. Это просто длинный ответ на простой вопрос.
Добавлено это как комментарий к оригинальному вопросу:
Это побитовые операторы. Вот что они делают (это реализация javascript).
Они – побитовые операторы, используемые в laravel, where()
, метод, и они поставляются в качестве оппортеров, вы можете найти более подробную информацию об этих opreators Here