簡體   English   中英

從帶有可選字段的請求創建 Laravel DTO

[英]Creating Laravel DTO from request with optional fields

我正在使用 Spatie Laravel-data 創建數據對象以傳入和傳出 API。我在嘗試從 POST 請求創建 DTO 時遇到了問題 - 某些字段不會傳入INSERT,最明顯的是 ID。

我每次都驗證失敗,出現以下錯誤

{
"message": "The given data was invalid.",
"errors": {
    "id": [
        "The id field is required."
        ]
    }
}

我的 DTO class 遵循這些說明,看起來像這樣:

class MemberData extends Data
{
    public function __construct(
        public int|Optional      $id,
        #[Max(255)]
        public string            $first_name,
        #[Max(255)]
        public string            $last_name,
    )
    {}
}

如何在不提供 ID 的情況下通過驗證? 或者我應該為 INSERT 創建一個不同的 DTO 嗎?

問題解決了。 如果我聽過我的 IDE 的抱怨,我就會意識到 Optional 是一個需要包含的 class。

屬性驗證(最大)也是如此

將此添加到數據 object 的頂部解決了這個問題。

use Spatie\LaravelData\Optional;
use Spatie\LaravelData\Attributes\Validation\Max;

暫無
暫無

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

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