簡體   English   中英

使用 Laravel 查詢生成器返回具有唯一列的所有行

[英]Return all rows with a unique column with Laravel Query Builder

我有一張看起來像下面的表格:

ID 年齡 顏色
1個 2個 藍色的
3個 3個 紅色的
4個 5個 綠色
5個 5個 紫色的

我想獲取所有具有唯一年齡的行,以便返回如下內容:

ID 年齡 顏色
1個 2個 藍色的
3個 3個 紅色的
4個 5個 綠色
$baseQuery = myModel::query()
->select('id', 'age', 'color')
->distinct('age')
->get()

這似乎返回了所有內容,但第二個我的 select 只有age列,它刪除了重復項。 問題是我需要整行,而不僅僅是年齡。 有任何想法嗎?

編輯:我嘗試的另一件事是:

$baseQuery = myModel::query()
->select('id', 'age', 'color')
->groupBy('age')
->get()

這只是引發了 1055 SQL 錯誤:

Syntax error or access violation: 1055 'table.color' isn't in GROUP BY

非常感謝!

編輯我想通了:在查詢之前添加以下內容,然后按上面的查詢分組。

\DB::statement("SET SQL_MODE=''");
$baseQuery = myModel::query()
->select('id', 'age', 'color')
->groupBy('age')
->get()

您的查詢邏輯存在問題,這就是為什么您無法獲得那樣的不同行的原因。

首先,讓我們談談年齡 = 5 的數據。有 2 行,其中包含年齡 = 5,顏色為綠色和紫色。 這就是問題。 如果您想要將不同的年齡與其他值返回給您,查詢應該返回給您什么? 是綠色數據還是紫色數據?

這沒有意義,不是嗎? 查詢將永遠不知道返回給您什么。 這就是為什么您不創建這樣的查詢的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM