- A lot of bugfixes and fitting to accomodate ldap adapter
This commit is contained in:
1 parent
f14347f01d
commit
16d76470da
15 files changed
+350
-216
No files matched your search
+23
-15
@@ -5,10 +5,10 @@ namespace Ulmus\Query;
|
||||
use Ulmus\QueryBuilder;
|
||||
use Ulmus\Repository\ConditionTrait;
|
||||
|
||||
class Join extends Fragment
|
||||
class Join extends Fragment
|
||||
{
|
||||
use ConditionTrait;
|
||||
|
||||
|
||||
const SQL_OUTER = "OUTER";
|
||||
const SQL_TOKEN = "JOIN";
|
||||
|
||||
@@ -20,32 +20,35 @@ class Join extends Fragment
|
||||
const TYPE_NATURAL = "NATURAL";
|
||||
|
||||
public bool $outer = false;
|
||||
|
||||
|
||||
public array $joins = [];
|
||||
|
||||
|
||||
public string $attachment = "ON";
|
||||
|
||||
|
||||
public string $side;
|
||||
|
||||
|
||||
public /*string|QueryBuilder*/ $table;
|
||||
|
||||
|
||||
public ? string $alias;
|
||||
|
||||
|
||||
public string $field;
|
||||
|
||||
|
||||
public /*string|QueryBuilder*/ $value;
|
||||
|
||||
|
||||
public /* QueryBuilder */ $queryBuilder;
|
||||
|
||||
public int $order = 40;
|
||||
|
||||
public function __construct(QueryBuilderInterface $queryBuilder)
|
||||
public int $joinOrder = 0;
|
||||
|
||||
public function __construct(QueryBuilderInterface $queryBuilder)
|
||||
{
|
||||
$this->queryBuilder = new QueryBuilder();
|
||||
$cls = get_class($queryBuilder);
|
||||
$this->queryBuilder = new $cls();
|
||||
$this->queryBuilder->parent = $queryBuilder;
|
||||
}
|
||||
|
||||
public function set(string $side, /* QueryBuilder|string */ $table, string $field, /* QueryBuilder|string */ $value)
|
||||
|
||||
public function set(string $side, /* QueryBuilder|string */ $table, string $field, /* QueryBuilder|string */ $value)
|
||||
{
|
||||
$this->side = $side;
|
||||
$this->table = $table;
|
||||
@@ -53,9 +56,14 @@ class Join extends Fragment
|
||||
$this->where($this->field = $field, $this->value = $value);
|
||||
}
|
||||
|
||||
public function order() : float
|
||||
{
|
||||
return $this->order + ( $this->joinOrder / 100 );
|
||||
}
|
||||
|
||||
public function render() : string
|
||||
{
|
||||
return $this->renderSegments([
|
||||
return $this->renderSegments([
|
||||
strtoupper($this->side), $this->outer ? static::SQL_OUTER : "", static::SQL_TOKEN, $this->table, $this->alias ?? "", $this->attachment, $this->queryBuilder->render(true) ?? ""
|
||||
]);
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user