Skip to content

Commit 8ecc2c0

Browse files
committed
Merge remote-tracking branch 'origin/master'
2 parents 4068e91 + 2a3086e commit 8ecc2c0

File tree

13 files changed

+91
-62
lines changed

13 files changed

+91
-62
lines changed

src/Builder/Delete.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ public function __toString() {
5454
$query = $this->buildOrder($query);
5555
$query = $this->buildLimit($query);
5656
$query = $this->buildOffset($query);
57-
$query .= ";\n";
5857
return $query;
5958
}
6059
}

src/Builder/Insert.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ public function __toString() {
214214
if($this->from !== null) {
215215
$fields = $this->from->getFields();
216216
$queryArr[] = sprintf("\t(%s)\n", join(', ', array_keys($fields)));
217-
$queryArr[] = trim(trim($this->from), ';');
217+
$queryArr[] = $this->from;
218218
} else {
219219
$fields = $this->fields;
220220
$insertData = $this->buildFieldList($fields);
@@ -229,8 +229,6 @@ public function __toString() {
229229
$queryArr[] = "{$updateData}\n";
230230
}
231231

232-
$queryArr[] = ";\n";
233-
234232
$query = join('', $queryArr);
235233

236234
return $query;

src/Builder/InsertUpdateStatement.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ protected function buildFieldList(array $fields, array $query = array()) {
3535
if($fieldValue instanceof DefaultValue) {
3636
$fieldValue = 'DEFAULT';
3737
}
38+
if(is_array($this->mask) && !in_array($fieldName, $this->mask)) {
39+
continue;
40+
}
3841
if (is_int($fieldName)) {
3942
$query[] = "\t{$fieldValue}";
4043
} else {

src/Builder/RunnableSelect.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,15 +62,15 @@ public function setPreserveTypes($preserveTypes = true) {
6262
public function fetchRows(\Closure $callback = null) {
6363
$statement = $this->createStatement();
6464
$data = $statement->fetchAll(\PDO::FETCH_ASSOC);
65-
if($callback !== null) {
66-
$data = array_map($callback, $data);
67-
}
6865
if($this->preserveTypes) {
6966
$columnDefinitions = $this->getFieldTypes($statement);
7067
foreach($data as &$row) {
7168
$row = $this->convertValues($row, $columnDefinitions);
7269
}
7370
}
71+
if($callback !== null) {
72+
$data = array_map($callback, $data);
73+
}
7474
$statement->closeCursor();
7575
return $data;
7676
}
@@ -166,7 +166,7 @@ public function getFoundRows() {
166166
private function createStatement() {
167167
$db = $this->db();
168168
$query = $this->__toString();
169-
$statement = $db->query($query);
169+
$statement = $db->prepare($query);
170170
$statement->execute($this->values);
171171
if($this->getCalcFoundRows()) {
172172
$this->foundRows = $db->query('SELECT FOUND_ROWS()')->fetchColumn();

src/Builder/Select.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,6 @@ public function __toString() {
140140
$query = $this->buildLimit($query);
141141
$query = $this->buildOffset($query);
142142
$query = $this->buildForUpdate($query);
143-
$query .= ";\n";
144143
return $query;
145144
}
146145

src/Builder/Update.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,6 @@ public function __toString() {
105105
$query = $this->buildOrder($query);
106106
$query = $this->buildLimit($query);
107107
$query = $this->buildOffset($query);
108-
$query .= ";\n";
109108
return $query;
110109
}
111110

src/Database.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ public function transactionRollback();
101101
/**
102102
* @param int|callable $tries
103103
* @param callable|null $callback
104-
* @return $this
104+
* @return mixed
105105
* @throws \Exception
106106
*/
107107
public function transaction($tries = 1, $callback = null);

src/Databases/MySQL.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ public function transactionRollback() {
238238
/**
239239
* @param int|callable $tries
240240
* @param callable|null $callback
241-
* @return $this
241+
* @return mixed
242242
* @throws \Exception
243243
*/
244244
public function transaction($tries = 1, $callback = null) {

tests/Builder/DeleteTest.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ public function testAlias() {
99
->from('t', 'travis#test1')
1010
->where('t.a = 1')
1111
->asString();
12-
$this->assertEquals("DELETE t FROM\n\ttravis_test.test1 t\nWHERE\n\t(t.a = 1)\n;\n", $query);
12+
$this->assertEquals("DELETE t FROM\n\ttravis_test.test1 t\nWHERE\n\t(t.a = 1)\n", $query);
1313
}
1414

1515
public function testMultipleTables() {
@@ -18,15 +18,15 @@ public function testMultipleTables() {
1818
->from('t2', 'travis#test2')
1919
->where('t1.a = 1')
2020
->asString();
21-
$this->assertEquals("DELETE t1, t2 FROM\n\ttravis_test.test1 t1,\n\ttravis_test.test2 t2\nWHERE\n\t(t1.a = 1)\n;\n", $sql);
21+
$this->assertEquals("DELETE t1, t2 FROM\n\ttravis_test.test1 t1,\n\ttravis_test.test2 t2\nWHERE\n\t(t1.a = 1)\n", $sql);
2222
}
2323

2424
public function testJoins() {
2525
$sql = TestDelete::create()
2626
->from('t1', 'travis#test1')
2727
->joinInner('t2', 'travis#test2', 't1.id = t2.id')
2828
->asString();
29-
$this->assertEquals("DELETE t1 FROM\n\ttravis_test.test1 t1\nINNER JOIN\n\ttravis_test.test2 t2 ON t1.id = t2.id\n;\n", $sql);
29+
$this->assertEquals("DELETE t1 FROM\n\ttravis_test.test1 t1\nINNER JOIN\n\ttravis_test.test2 t2 ON t1.id = t2.id\n", $sql);
3030
}
3131

3232
public function testWhere() {
@@ -35,30 +35,30 @@ public function testWhere() {
3535
->where('field1=?', 1)
3636
->where('field2 != field1')
3737
->asString();
38-
$this->assertEquals("DELETE FROM\n\ttravis_test.test1\nWHERE\n\t(field1='1')\n\tAND\n\t(field2 != field1)\n;\n", $sql);
38+
$this->assertEquals("DELETE FROM\n\ttravis_test.test1\nWHERE\n\t(field1='1')\n\tAND\n\t(field2 != field1)\n", $sql);
3939
}
4040

4141
public function testOrderBy() {
4242
$sql = TestDelete::create()
4343
->from('travis#test1')
4444
->orderBy('field1', 'DESC')
4545
->asString();
46-
$this->assertEquals("DELETE FROM\n\ttravis_test.test1\nORDER BY\n\tfield1 DESC\n;\n", $sql);
46+
$this->assertEquals("DELETE FROM\n\ttravis_test.test1\nORDER BY\n\tfield1 DESC\n", $sql);
4747
}
4848

4949
public function testLimit() {
5050
$sql = TestDelete::create()
5151
->from('travis#test1')
5252
->limit(10)
5353
->asString();
54-
$this->assertEquals("DELETE FROM\n\ttravis_test.test1\nLIMIT\n\t10\n;\n", $sql);
54+
$this->assertEquals("DELETE FROM\n\ttravis_test.test1\nLIMIT\n\t10\n", $sql);
5555
}
5656

5757
public function testOffset() {
5858
$sql = TestDelete::create()
5959
->from('travis#test1')
6060
->offset(10)
6161
->asString();
62-
$this->assertEquals("DELETE FROM\n\ttravis_test.test1\nOFFSET\n\t10\n;\n", $sql);
62+
$this->assertEquals("DELETE FROM\n\ttravis_test.test1\nOFFSET\n\t10\n", $sql);
6363
}
6464
}

tests/Builder/InsertTest.php

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,15 @@ public function testAlias() {
1111
->into('travis#test1')
1212
->addExpr('last_update=NOW()')
1313
->asString();
14-
$this->assertEquals("INSERT INTO\n\ttravis_test.test1\nSET\n\tlast_update=NOW()\n;\n", $query);
14+
$this->assertEquals("INSERT INTO\n\ttravis_test.test1\nSET\n\tlast_update=NOW()\n", $query);
1515
}
1616

1717
public function testAddExpr() {
1818
$query = TestInsert::create()
1919
->into('test1')
2020
->addExpr('last_update=NOW()')
2121
->asString();
22-
$this->assertEquals("INSERT INTO\n\ttest1\nSET\n\tlast_update=NOW()\n;\n", $query);
22+
$this->assertEquals("INSERT INTO\n\ttest1\nSET\n\tlast_update=NOW()\n", $query);
2323
}
2424

2525
public function testMassInsert() {
@@ -34,7 +34,7 @@ public function testMassInsert() {
3434
->updateExpr('a = VALUES(a)')
3535
->asString();
3636

37-
$this->assertEquals("INSERT INTO\n\ttravis_test.test2\n\t(a)\nSELECT\n\tb AS `a`\nFROM\n\ttravis_test.test1 oi\nWHERE\n\t(1!=2)\nON DUPLICATE KEY UPDATE\n\ta = VALUES(a)\n;\n", $query);
37+
$this->assertEquals("INSERT INTO\n\ttravis_test.test2\n\t(a)\nSELECT\n\tb AS `a`\nFROM\n\ttravis_test.test1 oi\nWHERE\n\t(1!=2)\nON DUPLICATE KEY UPDATE\n\ta = VALUES(a)\n", $query);
3838
}
3939

4040
public function testAddAll() {
@@ -52,19 +52,19 @@ public function testAddAll() {
5252
->into('test1')
5353
->addAll(['field1' => 123, 'field2' => 456])
5454
->asString();
55-
$this->assertEquals("INSERT INTO\n\ttest1\nSET\n\t`field1`='123',\n\t`field2`='456'\n;\n", $query);
55+
$this->assertEquals("INSERT INTO\n\ttest1\nSET\n\t`field1`='123',\n\t`field2`='456'\n", $query);
5656

5757
$query = (new TestInsert($db))
5858
->into('test1')
5959
->addAll(['field1' => 123, 'field2' => 456], ['field1'])
6060
->asString();
61-
$this->assertEquals("INSERT INTO\n\ttest1\nSET\n\t`field1`='123'\n;\n", $query);
61+
$this->assertEquals("INSERT INTO\n\ttest1\nSET\n\t`field1`='123'\n", $query);
6262

6363
$query = (new TestInsert($db))
6464
->into('travis#test1')
6565
->addAll(['field1' => 123, 'field2' => 456], ['field1'])
6666
->asString();
67-
$this->assertEquals("INSERT INTO\n\ttravis_test.test1\nSET\n\t`field1`='123'\n;\n", $query);
67+
$this->assertEquals("INSERT INTO\n\ttravis_test.test1\nSET\n\t`field1`='123'\n", $query);
6868
}
6969

7070
public function testUpdateAll() {
@@ -83,21 +83,21 @@ public function testUpdateAll() {
8383
->add('field1', 123)
8484
->updateAll(['field1' => 123, 'field2' => 456])
8585
->asString();
86-
$this->assertEquals("INSERT INTO\n\ttest1\nSET\n\t`field1`='123'\nON DUPLICATE KEY UPDATE\n\t`field1`='123',\n\t`field2`='456'\n;\n", $query);
86+
$this->assertEquals("INSERT INTO\n\ttest1\nSET\n\t`field1`='123'\nON DUPLICATE KEY UPDATE\n\t`field1`='123',\n\t`field2`='456'\n", $query);
8787

8888
$query = (new TestInsert($db))
8989
->into('test1')
9090
->add('field1', 123)
9191
->updateAll(['field1' => 123, 'field2' => 456], ['field1'])
9292
->asString();
93-
$this->assertEquals("INSERT INTO\n\ttest1\nSET\n\t`field1`='123'\nON DUPLICATE KEY UPDATE\n\t`field1`='123'\n;\n", $query);
93+
$this->assertEquals("INSERT INTO\n\ttest1\nSET\n\t`field1`='123'\nON DUPLICATE KEY UPDATE\n\t`field1`='123'\n", $query);
9494

9595
$query = (new TestInsert($db))
9696
->into('travis#test1')
9797
->add('field1', 123)
9898
->updateAll(['field1' => 123, 'field2' => 456], ['field1'])
9999
->asString();
100-
$this->assertEquals("INSERT INTO\n\ttravis_test.test1\nSET\n\t`field1`='123'\nON DUPLICATE KEY UPDATE\n\t`field1`='123'\n;\n", $query);
100+
$this->assertEquals("INSERT INTO\n\ttravis_test.test1\nSET\n\t`field1`='123'\nON DUPLICATE KEY UPDATE\n\t`field1`='123'\n", $query);
101101
}
102102

103103
public function testAddOrUpdateAll() {
@@ -115,18 +115,28 @@ public function testAddOrUpdateAll() {
115115
->into('test1')
116116
->addOrUpdateAll(['field1' => 123, 'field2' => 456])
117117
->asString();
118-
$this->assertEquals("INSERT INTO\n\ttest1\nSET\n\t`field1`='123',\n\t`field2`='456'\nON DUPLICATE KEY UPDATE\n\t`field1`='123',\n\t`field2`='456'\n;\n", $query);
118+
$this->assertEquals("INSERT INTO\n\ttest1\nSET\n\t`field1`='123',\n\t`field2`='456'\nON DUPLICATE KEY UPDATE\n\t`field1`='123',\n\t`field2`='456'\n", $query);
119119

120120
$query = (new TestInsert($db))
121121
->into('test1')
122122
->addOrUpdateAll(['field1' => 123, 'field2' => 456], ['field1'])
123123
->asString();
124-
$this->assertEquals("INSERT INTO\n\ttest1\nSET\n\t`field1`='123'\nON DUPLICATE KEY UPDATE\n\t`field1`='123'\n;\n", $query);
124+
$this->assertEquals("INSERT INTO\n\ttest1\nSET\n\t`field1`='123'\nON DUPLICATE KEY UPDATE\n\t`field1`='123'\n", $query);
125125

126126
$query = (new TestInsert($db))
127127
->into('travis#test1')
128128
->addOrUpdateAll(['field1' => 123, 'field2' => 456], ['field1'])
129129
->asString();
130-
$this->assertEquals("INSERT INTO\n\ttravis_test.test1\nSET\n\t`field1`='123'\nON DUPLICATE KEY UPDATE\n\t`field1`='123'\n;\n", $query);
130+
$this->assertEquals("INSERT INTO\n\ttravis_test.test1\nSET\n\t`field1`='123'\nON DUPLICATE KEY UPDATE\n\t`field1`='123'\n", $query);
131+
}
132+
133+
public function testMask() {
134+
$sql = TestInsert::create()
135+
->into('test')
136+
->addOrUpdate('field1', 1)
137+
->addOrUpdate('field2', 2)
138+
->setMask(['field1'])
139+
->asString();
140+
$this->assertEquals("INSERT INTO\n\ttest\nSET\n\t`field1`='1'\nON DUPLICATE KEY UPDATE\n\t`field1`='1'\n", $sql);
131141
}
132142
}

0 commit comments

Comments
 (0)