array query
V 1.1.11
배열 쿼리를 사용하면 다차원 배열에서 쿼리를 수행 할 수 있습니다.
이 라이브러리는 몇 가지 쿼리를 수행 해야하는 경우 다음에 적합합니다.
QueryBuilder를 인스턴스화하려면 다음을 수행하십시오.
use ArrayQuery QueryBuilder ;
$ array = [
[
' id ' => 1 ,
' title ' => ' Leanne Graham ' ,
' email ' => ' [email protected] ' ,
' rate ' => 5 ,
' company ' => [
' name ' => ' Romaguera-Jacobson ' ,
' catchPhrase ' => ' Face to face bifurcated interface ' ,
' bs ' => ' e-enable strategic applications '
]
],
[
' id ' => 2 ,
' title ' => ' Ervin Howell ' ,
' email ' => ' [email protected] ' ,
' rate ' => 3 ,
' company ' => [
' name ' => ' Robel-Corkery ' ,
' catchPhrase ' => ' Multi-tiered zero tolerance productivity ' ,
' bs ' => ' transition cutting-edge web services '
]
],
[
' id ' => 3 ,
' title ' => ' Clementine Bauch ' ,
' email ' => ' [email protected] ' ,
' rate ' => 4 ,
' company ' => [
' name ' => ' Keebler LLC ' ,
' catchPhrase ' => ' User-centric fault-tolerant solution ' ,
' bs ' => ' revolutionize end-to-end systems '
]
],
// ..
]
QueryBuilder:: create ( $ array );
// to add an element to your array. Do this BEFORE make a query on the array
$ element = [
' id ' => 4 ,
' title ' => ' Patricia Lebsack ' ,
' email ' => ' [email protected] ' ,
' rate ' => 2 ,
' company ' => [
' name ' => ' Robel-Corkery ' ,
' catchPhrase ' => ' Multi-tiered zero tolerance productivity ' ,
' bs ' => ' transition cutting-edge web services '
]
];
$ qb -> addElement ( $ element , 4 );
// to remove an element from array by his key. Do this BEFORE make a query on the array
$ qb -> removeElement ( 3 ); QueryBuilder는 데이터 일관성을 확인합니다. 불일치가 감지되면 NotConsistentDataException 이 증가합니다.
use ArrayQuery QueryBuilder ;
$ array = [
[
' id ' => 1 ,
' title ' => ' Leanne Graham ' ,
' email ' => ' [email protected] ' ,
' rate ' => 5 ,
' company ' => [
' name ' => ' Romaguera-Jacobson ' ,
' catchPhrase ' => ' Face to face bifurcated interface ' ,
' bs ' => ' e-enable strategic applications '
]
],
[
' id ' => 2 ,
' title ' => ' Ervin Howell ' ,
' email ' => ' [email protected] ' ,
' rate ' => 3 ,
' company ' => [
' name ' => ' Robel-Corkery ' ,
' catchPhrase ' => ' Multi-tiered zero tolerance productivity ' ,
' bs ' => ' transition cutting-edge web services '
]
],
[
' id ' => 3 ,
' title ' => ' Clementine Bauch ' ,
' email ' => ' [email protected] ' ,
' rate ' => 4 ,
' company ' => [
' name ' => ' Keebler LLC ' ,
' catchPhrase ' => ' User-centric fault-tolerant solution ' ,
' bs ' => ' revolutionize end-to-end systems '
],
' extra-field ' => ' this is an extra field '
],
]
// NotConsistentDataException will be raised
QueryBuilder:: create ( $ array );배열에서 쿼리를 수행 할 수 있습니다. 기준을 연결할 수 있습니다.
use ArrayQuery QueryBuilder ;
// ..
$ qb = QueryBuilder:: create ( $ array );
$ qb
-> addCriterion ( ' title ' , ' Leanne ' , ' CONTAINS ' )
-> addCriterion ( ' rate ' , ' 3 ' , ' > ' )
-> sortedBy ( ' title ' , ' DESC ' );
// you can search by nested keys
$ qb -> addCriterion ( ' company.name ' , ' Romaguera-Jacobson ' );
// get results
foreach ( $ qb -> getResults () as $ element ){
// ...
}
// get first result
$ first = $ qb -> getFirstResult ();
// get last result
$ last = $ qb -> getLastResult ();
// get a result by index
$ thirdResult = $ qb -> getResult ( 3 );= (기본 연산자, 생략 할 수 있음)><<=>=!=ARRAY_MATCHCONTAINS (케이스 insensitive)ENDS_WITHEQUALS_DATEGT_DATEGTE_DATEIN_ARRAYIN_ARRAY_INVERSEDLT_DATELTE_DATESTARTS_WITHASC (기본 연산자, 생략 할 수 있음)DESCDATE_ASCDATE_DESC 배열에 가입 할 수 있습니다. 이 전체 예를 고려하십시오 :
use ArrayQuery QueryBuilder ;
$ users = [
[
' id ' => 1 ,
' name ' => ' Mauro Cassani ' ,
' id_category ' => 3 ,
' email ' => ' [email protected] '
],[
' id ' => 2 ,
' name ' => ' Mario Rossi ' ,
' id_category ' => 3 ,
' email ' => ' [email protected] '
],[
' id ' => 3 ,
' name ' => ' Maria Bianchi ' ,
' id_category ' => 1 ,
' email ' => ' [email protected] '
]
];
$ category = [
' id ' => 3 ,
' name ' => ' Web Developer '
];
$ qb = QueryBuilder:: create ( $ users )
-> join ( $ category , ' category ' , ' id_category ' , ' id ' )
-> addCriterion ( ' category.id ' , 3 );
foreach ( $ qb -> getResults () as $ element ){
// ...
}쿼리 결과에 대한 기준을 추가하고 한계 및 오프셋을 지정할 수 있습니다.
use ArrayQuery QueryBuilder ;
$ qb = QueryBuilder:: create ( $ array );
$ qb
-> addCriterion ( ' title ' , [ ' Leanne ' ], ' IN_ARRAY ' )
-> addCriterion ( ' rate ' , ' 3 ' , ' > ' )
-> sortedBy ( ' title ' )
-> limit ( 0 , 10 );
foreach ( $ qb -> getResults () as $ element ){
// ...
} DateTime 필드를 기반으로 쿼리를 수행 할 수 있습니다. DATE_ASC 또는 DATE_DESC 연산자를 사용하여 결과를 날짜별로 정렬 할 수 있습니다. 형식이 YYYY-mm-dd 아닌 경우 날짜 형식을 지정해야합니다.
use ArrayQuery QueryBuilder ;
$ qb = QueryBuilder:: create ( $ array );
$ qb
-> addCriterion ( ' registration_date ' , ' 01/05/2017 ' , ' GT_DATE ' , ' d/m/Y ' )
-> addCriterion ( ' rate ' , ' 3 ' , ' > ' )
-> sortedBy ( ' registration_date ' , ' DATE_DESC ' , ' d/m/Y ' )
-> limit ( 0 , 10 );
foreach ( $ qb -> getResults () as $ element ){
// ...
} as 키워드를 구분기로 사용하여 별칭을 사용할 수 있습니다. 다음을 수행하십시오.
use ArrayQuery QueryBuilder ;
$ qb = QueryBuilder:: create ( $ array );
$ qb
-> addCriterion ( ' name as n ' , ' Ervin Howell ' )
-> addCriterion ( ' username as user ' , ' Antonette ' )
-> addCriterion ( ' address.street as street ' , ' Victor Plains ' );
foreach ( $ qb -> getResults () as $ element ){
// ...
// now you have
// $element['n']
// $element['user']
// $element['street']
} getShuffledResults 메소드를 사용하여 쿼리 결과를 셔플 할 수 있습니다.
use ArrayQuery QueryBuilder ;
$ qb = QueryBuilder:: create ( $ array );
foreach ( $ qb -> getShuffledResults () as $ element ){
// ...
}더 많은 예는 QueryBuilderTest를 참조하십시오.
문제를 발견했거나 아이디어가 있으면이 섹션을 참조하십시오.
이 프로젝트는 MIT 라이센스에 따라 라이센스가 부여됩니다. 자세한 내용은 License.md 파일을 참조하십시오.