Server IP : 192.158.238.246 / Your IP : 3.22.241.171 Web Server : LiteSpeed System : Linux uniform.iwebfusion.net 4.18.0-553.27.1.lve.1.el8.x86_64 #1 SMP Wed Nov 20 15:58:00 UTC 2024 x86_64 User : jenniferflocom ( 1321) PHP Version : 8.1.32 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /proc/7779/task/7779/cwd/plugins/give/src/Framework/QueryBuilder/Concerns/ |
Upload File : |
<?php namespace Give\Framework\QueryBuilder\Concerns; use Give\Framework\Database\DB; use Give\Framework\QueryBuilder\Clauses\RawSQL; use Give\Framework\QueryBuilder\Clauses\Select; /** * @since 2.19.0 */ trait SelectStatement { /** * @var Select[]|RawSQL[] */ protected $selects = []; /** * @var bool */ protected $distinct = false; /** * @var bool */ private $includeSelectKeyword = true; /** * @param array $columns * * @return $this */ public function select(...$columns) { $selects = array_map(function ($select) { if (is_array($select)) { list($column, $alias) = $select; return new Select($column, $alias); } return new Select($select); }, $columns); $this->selects = array_merge($this->selects, $selects); return $this; } /** * Add raw SQL SELECT statement * * @param string $sql * @param ...$args */ public function selectRaw($sql, ...$args) { $this->selects[] = new RawSQL($sql, $args); return $this; } /** * Select distinct * * @return $this */ public function distinct() { $this->distinct = true; return $this; } /** * @return string[] */ protected function getSelectSQL() { // Select all by default if (empty($this->selects)) { $this->select('*'); } $selects = []; foreach ($this->selects as $i => $select) { if ($select instanceof RawSQL) { if ($i === 0) { // If the first element is an instance of RawSQL // then we don't need the starting SELECT keyword because we assume that the dev will include that in RawSQL $this->includeSelectKeyword = false; } $selects[] = $select->sql; continue; } if ($select->alias) { $selects[] = DB::prepare( '%1s AS %2s', $select->column, $select->alias ); continue; } $selects[] = DB::prepare('%1s', $select->column); } $selectStatements = implode(', ', $selects); if ($this->includeSelectKeyword) { $keyword = 'SELECT '; if ($this->distinct) { $keyword .= 'DISTINCT '; } return [$keyword . $selectStatements]; } return [$selectStatements]; } }