แบบสอบถาม Array ช่วยให้คุณสามารถทำการสืบค้นในอาร์เรย์หลายมิติ
ห้องสมุดนี้เหมาะสำหรับคุณหากคุณต้องการทำการสืบค้นบางอย่างเกี่ยวกับ:
ในการสร้างอินสแตนซ์ 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 (กรณีที่ไม่รู้สึก)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 Operator เพื่อเรียงลำดับผลลัพธ์ตามวันที่ คุณต้องระบุ รูปแบบวันที่ หากรูปแบบของคุณไม่ใช่ 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 สำหรับรายละเอียด