mirror of
https://github.com/espocrm/espocrm.git
synced 2026-07-01 08:26:04 +00:00
@@ -52,6 +52,7 @@ use Espo\ORM\Query\Part\Condition;
|
||||
use Espo\ORM\Query\Select;
|
||||
use Espo\ORM\Query\Update;
|
||||
|
||||
use LogicException;
|
||||
use RuntimeException;
|
||||
|
||||
require_once 'tests/unit/testData/DB/Entities.php';
|
||||
@@ -986,6 +987,89 @@ class MysqlQueryComposerTest extends \PHPUnit\Framework\TestCase
|
||||
);
|
||||
}
|
||||
|
||||
public function testJoinSubQuery1(): void
|
||||
{
|
||||
$sql =
|
||||
"SELECT post.id AS `id` FROM `post` " .
|
||||
"JOIN (SELECT post.id AS `id` FROM `post` WHERE post.deleted = 0) AS `a` ON a.id = post.id " .
|
||||
"WHERE post.deleted = 0";
|
||||
|
||||
$select = SelectBuilder::create()
|
||||
->select('id')
|
||||
->from('Post')
|
||||
->join(
|
||||
Join
|
||||
::createWithSubQuery(
|
||||
SelectBuilder::create()
|
||||
->select('id')
|
||||
->from('Post')
|
||||
->build(),
|
||||
'a'
|
||||
)
|
||||
->withConditions(
|
||||
WhereClause::create(
|
||||
Condition::equal(
|
||||
Expression::column('a.id'),
|
||||
Expression::column('post.id')
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
->build();
|
||||
|
||||
$this->assertEquals(
|
||||
$sql,
|
||||
$this->query->composeSelect($select)
|
||||
);
|
||||
}
|
||||
|
||||
public function testJoinSubQuery2(): void
|
||||
{
|
||||
$sql =
|
||||
"SELECT post.id AS `id` FROM `post` " .
|
||||
"JOIN (SELECT post.id AS `id` FROM `post` WHERE post.deleted = 0) AS `a` ON a.id = post.id " .
|
||||
"WHERE post.deleted = 0";
|
||||
|
||||
$select = SelectBuilder::create()
|
||||
->select('id')
|
||||
->from('Post')
|
||||
->join(
|
||||
SelectBuilder::create()
|
||||
->select('id')
|
||||
->from('Post')
|
||||
->build(),
|
||||
'a',
|
||||
Condition::equal(
|
||||
Expression::column('a.id'),
|
||||
Expression::column('post.id')
|
||||
)
|
||||
)
|
||||
->build();
|
||||
|
||||
$this->assertEquals(
|
||||
$sql,
|
||||
$this->query->composeSelect($select)
|
||||
);
|
||||
}
|
||||
|
||||
public function testJoinSubQueryException1(): void
|
||||
{
|
||||
$this->expectException(LogicException::class);
|
||||
|
||||
$select = SelectBuilder::create()
|
||||
->select('id')
|
||||
->from('Post')
|
||||
->join(
|
||||
SelectBuilder::create()
|
||||
->select('id')
|
||||
->from('Post')
|
||||
->build(),
|
||||
)
|
||||
->build();
|
||||
|
||||
$this->query->composeSelect($select);
|
||||
}
|
||||
|
||||
public function testWhereNotValue1()
|
||||
{
|
||||
$sql = $this->query->compose(Select::fromRaw([
|
||||
|
||||
Reference in New Issue
Block a user