如何在Laravel中填充DTO对象空间?

h5qlskok  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(112)

我用的是来自拉拉威尔太空公司的DTO。
DTO模型如下所示:

<?php

namespace Domain\Subscriber\DataTransferObjects;

use Spatie\LaravelData\Data;

class Rating {
    public int $rateid;
    public int $rate;

}

class RateData extends Data
{

    public Rating $rating = array();

    public function __construct() {

    }
}

我在控制器内获取请求:

{"rating": [{"rateid": 1, "rate": 4}]}

如何通过此请求填写DTO?
控制器为:

class RateController extends Controller
{

    public function index(Request $request)
    {
        $RateData = new RateData()
        $service->setRate();
    }
vbkedwbf

vbkedwbf1#

我认为在RateData中 Package Rating没有意义,因为它只是简单的数据。

class Rating extends Data
{
    public int $rateid;
    public int $rate;
}

在你的控制器里。

foreach ($request->get('rating') as $ratingData) {
    $rating = Rating::from(
        [
            'rateid' => $ratingData['rateid'],
            'rate' => $ratingData['rate'],
        ]
    );
}

只是一个一般的提示,保持一致的命名,这将有助于你在长期。
Pascal大小写用于$RateDataDTO,在$rateid;上使用全部小写。例如,PHP属性应为camel大小写。$rateId$rateData

相关问题