3

タイトルはかなり自明ですが、私が欲しいのは動的なデフォルト値です。

その背後にある考え方は、データベース内の列から最大の数値を取得し、結果に 1 を追加することです。この結果はデフォルト値として保存する必要があります。

たとえば、次のコードを見てみましょう。

$GLOBALS['TCA'][$modelName]['columns']['autojobnumber'] = array(
    'exclude' => true,
    'label' => 'LLL:EXT:path/To/The/LLL:tx_extension_domain_model_job_autojobnumber',
    'config' => [
        'type' => 'input',
        'size' => 10,
        'eval' => 'trim,int',
        'readOnly' =>1,
        'default' => $result,
    ]
);

SQL は次のようになります。

$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_extension_domain_model_job');
$getBiggestNumber = $queryBuilder
     ->select('autojobnumber')
     ->from('tx_extension_domain_model_job')
     ->groupBy('autojobnumber')
     ->orderBy('autojobnumber', 'DESC')
     ->setMaxResults(1)
     ->execute()
     ->fetchColumn(0);
$result = $getBiggestNumber + 1;

では、どうすればその「きれい」にできますか?

私は考えましprocessCmdmap_preProcessたが、対応するTCAフィールドに値を渡す方法がわかりません。さらに、オブジェクトを保存した後にDebuggerUtility使用した場合と同じように使用しても、バックエンドで結果が得られません。processDatamap_afterAllOperations

誰かが私を正しい方向に向けることができますか?

4

0 に答える 0