Exemplo n.º 1
0
 public function testField()
 {
     $where = Where::field('foo');
     $exp = $where->equals(10);
     $this->assertInstanceOf(Where\FieldExpressionBuilder::class, $where);
     $this->assertEquals(Expr::eq(Expr::field('foo'), Expr::value(10)), $exp);
 }
<?php

require __DIR__ . '/../vendor/autoload.php';
use Magento\Component\QueryLanguage\Expression\Transformer\Configuration;
use Magento\Component\QueryLanguage\Expression\Transformer\SQLTransformerBuilder;
use Magento\Component\QueryLanguage\Expression\Where;
// Build or hydrate query
$query = Where::all([Where::field('name')->contains('Snow'), Where::field('age')->between(25, 30)]);
// Initiate database connection
$pdo = new \PDO('sqlite::memory:');
// Load sample data
array_map([$pdo, 'exec'], ['CREATE TABLE people (id INT, name VARCHAR(10), age INT);', 'INSERT INTO people VALUES(1, "John Snow", 30);', 'INSERT INTO people VALUES(2, "Ramsay Snow", 31);']);
// Create transformer
$transformer = SQLTransformerBuilder::make()->build();
// Transform query into SQL clause
$clause = $transformer->transform($query, Configuration::make());
// Execute query
$stmt = $pdo->prepare('SELECT * FROM people WHERE ' . $clause->getWhere());
$stmt->execute($clause->getParameters());
// Fetch results
$people = $stmt->fetchAll(PDO::FETCH_ASSOC);
var_dump($people);
 public function testNotMatch()
 {
     $filter = $this->transformer->transform(Where::not(Where::field('name')->contains('n')), $this->config);
     $result = array_filter($this->data, $filter);
     $this->assertEquals(['joey'], array_keys($result));
 }
 public function testNotMatch()
 {
     $sql = $this->transformer->transform(Where::not(Where::field('email')->contains('@magento.com')), $this->config);
     $this->assertEquals('NOT (phpunit.email LIKE ?)', $sql->getWhere());
     $this->assertEquals(['%@magento.com%'], $sql->getParameters());
 }
 public function testNotMatch()
 {
     $result = $this->find(Where::not(Where::field('name')->contains('n')));
     $this->assertEquals(['joey'], $result);
 }