Laravel 模型多个版本

Laravel Model multiple versions

我正在寻找一种方法如何 return 仅 table 的最新版本模型和包含多个唯一列的所有其他模型版本。

$table->string('document_number');
$table->string('version');
$table->unique(['document_number','version']);

仅显示最新版本的示例:

ABCDoc1 Version 1
ABCDoc1 Version 2
ABCDoc2 Version 1
ABCDoc2 Version 2
ABCDoc2 Version 3
        
Desired Result:
ABCDoc1 Version 2
ABCDoc2 Version 3

显示旧版本的示例

ABCDoc1 Version 1
ABCDoc1 Version 2
ABCDoc2 Version 1
ABCDoc2 Version 2
ABCDoc2 Version 3
    
Desired Result:
ABCDoc1 Version 1
ABCDoc2 Version 1
ABCDoc2 Version 2

任何帮助将不胜感激:)

您可以在查询中使用修改后的 version 字符串的 max,并且不要忘记添加 groupBy() 以按 document_number 对结果进行分组,因为示例:

YourEloquent::select(DB::raw("
    document_number,
    max( SUBSTR(version, -1, LOCATE(' ', version)) ) as max_version"))
    ->groupBy('document_number')->get();

你会得到这样的结果https://paiza.io/projects/-yZtaUKekoabUDfzLihQgw?language=mysql