Skip to content

Commit

Permalink
Release version 4.0.4
Browse files Browse the repository at this point in the history
  • Loading branch information
hungnguyenhp committed Apr 30, 2024
1 parent 5985935 commit a1f4193
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 0 deletions.
54 changes: 54 additions & 0 deletions src/Model/BaseModel.php
Original file line number Diff line number Diff line change
Expand Up @@ -987,6 +987,31 @@ public function getDistinctResult($select = array('*')): Collection
return $db->get($select);
}

/**
* Function getDistinctResultUniqueColumn - Hàm lấy danh sách Distinct toàn bộ bản ghi trong 1 bảng theo 1 cột unique bất kì
*
* @param string|array $select Mảng dữ liệu danh sách các field cần so sánh
* @param string $uniqueColumn Cột dữ liệu cần đối chiếu và lấy kết quả duy nhất
* User: 713uk13m <dev@nguyenanhung.com>
* Copyright: 713uk13m <dev@nguyenanhung.com>
* @return Collection
*/
public function getDistinctResultUniqueColumn($select = array('*'), string $uniqueColumn = '*'): Collection
{
$select = $this->prepareFormatSelectField($select);
$this->connection();
$db = DB::table($this->table);
$db = $this->prepareJoinStatement($db);
$db->distinct();
$this->logger->debug(__FUNCTION__, 'SQL Queries: ' . $db->toSql());
$result = $db->get($select);
//$this->logger->debug(__FUNCTION__, 'Result from DB => ' . json_encode($result));
if ( ! empty($uniqueColumn) && $uniqueColumn !== '*') {
return $this->bindUniqueColumn($result, $uniqueColumn);
}
return $result;
}

/**
* Hàm lấy danh sách Distinct toàn bộ bản ghi theo điều kiện
*
Expand All @@ -1011,6 +1036,35 @@ public function getDistinctResultByColumn($select = '*', $wheres = array()): Col
return $query->get($select);
}

/**
* Function getDistinctResultByColumnUnique - Hàm lấy danh sách Distinct toàn bộ bản ghi theo điều kiện và theo 1 cột unique bất kì
*
* @param string|array $select Danh sách các cột dữ liệu cần lấy ra
* @param array|string $wheres Điều kiện kiểm tra đầu vào của dữ liệu
* @param string $uniqueColumn Cột dữ liệu cần đối chiếu và lấy kết quả duy nhất
* User: 713uk13m <dev@nguyenanhung.com>
* Copyright: 713uk13m <dev@nguyenanhung.com>
* @return Collection
*/
public function getDistinctResultByColumnUnique(
$select = '*',
$wheres = array(),
string $uniqueColumn = '*'
): Collection {
$this->connection();
$db = DB::table($this->table);
$db = $this->prepareJoinStatement($db);
$query = $this->prepareWhereAndFieldStatement($db, $wheres, $select);
$query->distinct();
$this->logger->debug(__FUNCTION__, 'SQL Queries: ' . $query->toSql());
$result = $query->get($select);
//$this->logger->debug(__FUNCTION__, 'Result from DB => ' . json_encode($result));
if ( ! empty($uniqueColumn) && $uniqueColumn !== '*') {
return $this->bindUniqueColumn($result, $uniqueColumn);
}
return $result;
}

/**
* Hàm getResultDistinct là alias của hàm getDistinctResult
*
Expand Down
15 changes: 15 additions & 0 deletions src/Model/Helper.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
namespace nguyenanhung\MyDatabase\Model;

use Illuminate\Database\Query\Builder;
use Illuminate\Support\Collection;

/**
* Trait Helper
Expand Down Expand Up @@ -822,4 +823,18 @@ public function filterRecordIsActive(Builder $db, string $field = 'status', $tab

return $db;
}

/**
* Function bindUniqueColumn
*
* @param Collection $result
* @param string $column
* User: 713uk13m <dev@nguyenanhung.com>
* Copyright: 713uk13m <dev@nguyenanhung.com>
* @return Collection
*/
public function bindUniqueColumn(Collection $result, string $column): Collection
{
return collect($result)->unique($column);
}
}

0 comments on commit a1f4193

Please sign in to comment.