Skip to content

Commit 9578825

Browse files
committed
Merge branch 'dev'
* dev: Fixed issue m1ome#8 (Empty resultset/array/builder) Sample code: should be json array not object.
2 parents a2ea81d + 7052efb commit 9578825

File tree

3 files changed

+60
-4
lines changed

3 files changed

+60
-4
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,12 +119,12 @@ class User extends \Phalcon\Mvc\Model {
119119
url: '/test/index',
120120
method: 'POST'
121121
},
122-
columns: {
122+
columns: [
123123
{data: "id", searchable: false},
124124
{data: "name"},
125125
{data: "email"},
126126
{data: "balance", searchable: false}
127-
}
127+
]
128128
});
129129
});
130130
</script>

spec/suite/DataTableSpec.php

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,24 @@
1212

1313
});
1414

15+
it("should work with empty ResultSet", function() {
16+
17+
$resultset = $this->di->get('modelsManager')
18+
->createQuery("SELECT * FROM \Spec\Models\User WHERE balance < 0")
19+
->execute();
20+
21+
$dataTables = new DataTable();
22+
$response = $dataTables->fromResultSet($resultset)->getResponse();
23+
24+
expect($response)->toBe([
25+
'draw' => null,
26+
'recordsTotal' => 0,
27+
'recordsFiltered' => 0,
28+
'data' => []
29+
]);
30+
31+
});
32+
1533
it("should create a ResultSet", function() {
1634

1735
$resultset = $this->di->get('modelsManager')
@@ -38,6 +56,24 @@
3856

3957
});
4058

59+
it("should create an empty ArrayAdapter", function() {
60+
61+
$array = $this->di->get('modelsManager')
62+
->createQuery("SELECT * FROM \Spec\Models\User WHERE balance < 0")
63+
->execute()->toArray();
64+
65+
$dataTables = new DataTable();
66+
$response = $dataTables->fromArray($array)->getResponse();
67+
68+
expect($response)->toBe([
69+
'draw' => null,
70+
'recordsTotal' => 0,
71+
'recordsFiltered' => 0,
72+
'data' => []
73+
]);
74+
75+
});
76+
4177
it("should create a ArrayAdapter", function() {
4278

4379
$array = $this->di->get('modelsManager')
@@ -64,6 +100,26 @@
64100

65101
});
66102

103+
it("should create a from a empty QueryBuilder", function() {
104+
105+
$builder = $this->di->get('modelsManager')
106+
->createBuilder()
107+
->columns('id, name, email, balance')
108+
->from('Spec\Models\User')
109+
->where('balance < 0');
110+
111+
$dataTables = new DataTable();
112+
$response = $dataTables->fromBuilder($builder)->getResponse();
113+
114+
expect($response)->toBe([
115+
'draw' => null,
116+
'recordsTotal' => 0,
117+
'recordsFiltered' => 0,
118+
'data' => []
119+
]);
120+
121+
});
122+
67123
it("should create a QueryBuilder", function() {
68124

69125
$builder = $this->di->get('modelsManager')

src/DataTable.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public function fromBuilder($builder, $columns = []) {
5858
}
5959

6060
public function fromResultSet($resultSet, $columns = []) {
61-
if(empty($columns)) {
61+
if(empty($columns) && $resultSet->count() > 0) {
6262
$columns = array_keys($resultSet->getFirst()->toArray());
6363
$resultSet->rewind();
6464
}
@@ -73,7 +73,7 @@ public function fromResultSet($resultSet, $columns = []) {
7373
}
7474

7575
public function fromArray($array, $columns = []) {
76-
if(empty($columns)) {
76+
if(empty($columns) && count($array) > 0) {
7777
$columns = array_keys(current($array));
7878
}
7979

0 commit comments

Comments
 (0)