| | 178 | |
| | 179 | |
| | 180 | public function testOrQuerySupport() |
| | 181 | { |
| | 182 | $q1 = Doctrine_Query::create() |
| | 183 | ->select('u.id') |
| | 184 | ->from('User u') |
| | 185 | ->leftJoin('u.Phonenumber p') |
| | 186 | ->where('u.name = ?') |
| | 187 | ->orWhere('u.loginname = ?'); |
| | 188 | |
| | 189 | $q2 = Doctrine_Query::create() |
| | 190 | ->select('u.id') |
| | 191 | ->from('User u') |
| | 192 | ->leftJoin('u.Phonenumber p') |
| | 193 | ->where('u.name = ? OR u.loginname = ?'); |
| | 194 | |
| | 195 | $this->assertEqual( |
| | 196 | $q1->getSqlQuery(), |
| | 197 | 'SELECT e.id AS e__id FROM entity e LEFT JOIN phonenumber p ON e.id = p.entity_id ' . |
| | 198 | 'WHERE e.name = ? OR e.loginname = ? AND (e.type = 0)' |
| | 199 | ); |
| | 200 | |
| | 201 | $items1 = $q1->execute(array('zYne', 'jwage'), Doctrine::HYDRATE_ARRAY); |
| | 202 | $items2 = $q2->execute(array('zYne', 'jwage'), Doctrine::HYDRATE_ARRAY); |
| | 203 | |
| | 204 | $this->assertEqual(count($items1), count($items2)); |
| | 205 | |
| | 206 | $q1->free(); |
| | 207 | $q2->free(); |
| | 208 | } |
| | 209 | |
| | 210 | |
| | 211 | public function testOrQuerySupport2() |
| | 212 | { |
| | 213 | $q1 = Doctrine_Query::create() |
| | 214 | ->select('u.id') |
| | 215 | ->from('User u') |
| | 216 | ->leftJoin('u.Phonenumber p') |
| | 217 | ->where('u.name = ?') |
| | 218 | ->andWhere('u.loginname = ?') |
| | 219 | ->orWhere('u.id = ?'); |
| | 220 | |
| | 221 | $q2 = Doctrine_Query::create() |
| | 222 | ->select('u.id') |
| | 223 | ->from('User u') |
| | 224 | ->leftJoin('u.Phonenumber p') |
| | 225 | ->where('(u.name = ? AND u.loginname = ?) OR (u.id = ?)'); |
| | 226 | |
| | 227 | $this->assertEqual( |
| | 228 | $q1->getSqlQuery(), |
| | 229 | 'SELECT e.id AS e__id FROM entity e LEFT JOIN phonenumber p ON e.id = p.entity_id ' . |
| | 230 | 'WHERE e.name = ? AND e.loginname = ? OR e.id = ? AND (e.type = 0)' |
| | 231 | ); |
| | 232 | |
| | 233 | $items1 = $q1->execute(array('jon', 'jwage', 4), Doctrine::HYDRATE_ARRAY); |
| | 234 | $items2 = $q2->execute(array('jon', 'jwage', 4), Doctrine::HYDRATE_ARRAY); |
| | 235 | |
| | 236 | $this->assertEqual(count($items1), count($items2)); |
| | 237 | |
| | 238 | $q1->free(); |
| | 239 | $q2->free(); |
| | 240 | } |
| | 241 | |
| | 242 | |
| | 243 | public function testOrQuerySupport3() |
| | 244 | { |
| | 245 | $q1 = Doctrine_Query::create() |
| | 246 | ->select('u.id') |
| | 247 | ->from('User u') |
| | 248 | ->leftJoin('u.Phonenumber p') |
| | 249 | ->where("u.name = 'jon'") |
| | 250 | ->andWhere("u.loginname = 'jwage'") |
| | 251 | ->orWhere("u.id = 4") |
| | 252 | ->orWhere("u.id = 5") |
| | 253 | ->andWhere("u.name LIKE 'Arnold%'"); |
| | 254 | |
| | 255 | $q2 = Doctrine_Query::create() |
| | 256 | ->select('u.id') |
| | 257 | ->from('User u') |
| | 258 | ->leftJoin('u.Phonenumber p') |
| | 259 | ->where("((u.name = 'jon' AND u.loginname = 'jwage') OR (u.id = 4 OR (u.id = 5 AND u.name LIKE 'Arnold%')))"); |
| | 260 | |
| | 261 | $this->assertEqual( |
| | 262 | $q1->getSqlQuery(), |
| | 263 | "SELECT e.id AS e__id FROM entity e LEFT JOIN phonenumber p ON e.id = p.entity_id " . |
| | 264 | "WHERE e.name = 'jon' AND e.loginname = 'jwage' OR e.id = 4 OR e.id = 5 AND e.name LIKE 'Arnold%' AND (e.type = 0)" |
| | 265 | ); |
| | 266 | |
| | 267 | $items1 = $q1->execute(array(), Doctrine::HYDRATE_ARRAY); |
| | 268 | $items2 = $q2->execute(array(), Doctrine::HYDRATE_ARRAY); |
| | 269 | |
| | 270 | $this->assertEqual(count($items1), count($items2)); |
| | 271 | |
| | 272 | $q1->free(); |
| | 273 | $q2->free(); |
| | 274 | } |