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
我正在寻找一种方法如何 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