$ totalが20ではなく40を表示するのはなぜですか?

user9977616

会議には2人の参加者が1人登録されているので、データベースは以下のようになります。

登録表

id     conference_id      user_that_did_registration
1         1                           1

参加者テーブル

id   registration_id     registration_type_id
4           4                   1   
5           4                   1

登録タイプテーブル

id     name     conference_id      price
1     general           1           10

価格が10の登録タイプ「1」に関連付けられた参加者がそれぞれ2人いるため、ID「1」の登録の合計価格を20にする必要があります。

私はこのコードを持っていますが、dd($ total)は20ではなく40を示しています。理由を知っていますか?

$registrationTypeDetails = Registration::with(['participants.registration_type',
    'participants' => function ($query) use ($regID) {
        $query->select('id', 'registration_type_id', 'registration_id')->where('registration_id', $regID);
    }
])->find($regID);


if ($registrationTypeDetails->user_that_did_registration != $user_id) {
    return redirect('/');
} else {
    $total = 0;
    $type_counts = [];
    foreach ($registrationTypeDetails->participants as $p) {
        $name = $p->registration_type->name;
        if (!isset($type_counts[$name])) {
            $type_counts[$name] = 0;
        }
        $type_counts[$name]++;
    }

    dd($registrationTypeDetails->participants);

    foreach ($registrationTypeDetails->participants as $participant) {
        $total += $participant->registration_type->price * $type_counts[$name];
    }

    dd($total); // shows 40 not 20
}

$ registrationTypeDetailsは次のことを示しています。

Registration {#290 ▼
  #relations: array:1 [▼
    "participants" => Collection {#299 ▼
      #items: array:2 [▼
        0 => Participant {#306 ▼
          #relations: array:1 [▼
            "registration_type" => RegistrationType {#311 ▶}
          ]
        }
        1 => Participant {#308 ▼
          #relations: array:1 [▼
            "registration_type" => RegistrationType {#311 ▼
              #attributes: array:11 [▼
                "id" => 1
                "name" => "general"
                "price" => 10
                "conference_id" => 1
              ]
            }
          ]
        }
      ]
    }
  ]
}
rkj

あなたが持っていると仮定すると、この一回を試してみてくださいhasManyとの関係RegistrationとをParticipant同様ParticipantbelongsToと関係がありますRegistrationType

$registration = Registration::with('participants', 'participants.registration_type')->find($regID);

$totalPrice = $registration->participants->sum(function ($participant) {
    return $participant->registration_type->price;
});

echo $totalPrice;

Laravelコレクションの合計https://laravel.com/docs/5.6/collections#method-sum

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

デバッガーが[EBP-20]ではなく[LOCAL.8]を表示するのはなぜですか。

分類Dev

Xcode 7が* .dylibではなく* .tbdを表示するのはなぜですか?

分類Dev

iftopが行ではなく「b」文字を表示するのはなぜですか?

分類Dev

Thunderbirdが膨大な数を表示するのはなぜですか?

分類Dev

出力が黒く表示されるのはなぜですか?

分類Dev

列が次ではなく下に表示されるのはなぜですか?

分類Dev

「leave」ではなく「popq%rbp」が表示されるのはなぜですか?

分類Dev

空の配列を作成すると、Javascriptが出力[(...)]ではなく(...)に表示されるのはなぜですか?

分類Dev

String.fromCharCodeを使用すると、文字ではなく\ u0000が表示されるのはなぜですか?

分類Dev

Altコードを入力するときに「ñ」ではなく「ń」が表示されるのはなぜですか?

分類Dev

このコードが出力16ではなく出力17を表示するのはなぜですか?

分類Dev

「sudols〜」が/ rootではなく/ home / usernameの内容を表示するのはなぜですか?

分類Dev

byteArrayの長さが20ではなく22になるのはなぜですか?

分類Dev

コードで「表示を少なくする」が機能しないのはなぜですか?

分類Dev

`go tool pprof`が関数名ではなくアドレスを表示するのはなぜですか?

分類Dev

readelfがLinuxではなくOSとして「SystemV」を表示するのはなぜですか?

分類Dev

* nixの人々が「文字」ではなく「...」を使用するのはなぜですか?

分類Dev

* nixの人々が「文字」ではなく「...」を使用するのはなぜですか?

分類Dev

この関数が配列だけでなく配列の配列を表示するのはなぜですか?

分類Dev

print(0.3)が0.30000000000000004ではなく0.3を出力するのはなぜですか

分類Dev

std :: fillがOutputIteratorではなくForwardIteratorを使用するのはなぜですか?

分類Dev

NodeJが通常MysqlではなくMongoDBを使用するのはなぜですか?

分類Dev

sizeof(!0)が4ではなく1を出力するのはなぜですか?

分類Dev

PytorchがFloatTensorではなくDoubleTensorを期待するのはなぜですか?

分類Dev

Rasa NLUがLSTMではなくSVMを使用するのはなぜですか?

分類Dev

itoaがunsignedではなくsigned文字を期待するのはなぜですか?

分類Dev

strtokがconstchar *ではなくchar *を使用するのはなぜですか?

分類Dev

git show filenameがdiffを表示するのはなぜですか?

分類Dev

FirefoxがSSL警告を表示するのはなぜですか

Related 関連記事

  1. 1

    デバッガーが[EBP-20]ではなく[LOCAL.8]を表示するのはなぜですか。

  2. 2

    Xcode 7が* .dylibではなく* .tbdを表示するのはなぜですか?

  3. 3

    iftopが行ではなく「b」文字を表示するのはなぜですか?

  4. 4

    Thunderbirdが膨大な数を表示するのはなぜですか?

  5. 5

    出力が黒く表示されるのはなぜですか?

  6. 6

    列が次ではなく下に表示されるのはなぜですか?

  7. 7

    「leave」ではなく「popq%rbp」が表示されるのはなぜですか?

  8. 8

    空の配列を作成すると、Javascriptが出力[(...)]ではなく(...)に表示されるのはなぜですか?

  9. 9

    String.fromCharCodeを使用すると、文字ではなく\ u0000が表示されるのはなぜですか?

  10. 10

    Altコードを入力するときに「ñ」ではなく「ń」が表示されるのはなぜですか?

  11. 11

    このコードが出力16ではなく出力17を表示するのはなぜですか?

  12. 12

    「sudols〜」が/ rootではなく/ home / usernameの内容を表示するのはなぜですか?

  13. 13

    byteArrayの長さが20ではなく22になるのはなぜですか?

  14. 14

    コードで「表示を少なくする」が機能しないのはなぜですか?

  15. 15

    `go tool pprof`が関数名ではなくアドレスを表示するのはなぜですか?

  16. 16

    readelfがLinuxではなくOSとして「SystemV」を表示するのはなぜですか?

  17. 17

    * nixの人々が「文字」ではなく「...」を使用するのはなぜですか?

  18. 18

    * nixの人々が「文字」ではなく「...」を使用するのはなぜですか?

  19. 19

    この関数が配列だけでなく配列の配列を表示するのはなぜですか?

  20. 20

    print(0.3)が0.30000000000000004ではなく0.3を出力するのはなぜですか

  21. 21

    std :: fillがOutputIteratorではなくForwardIteratorを使用するのはなぜですか?

  22. 22

    NodeJが通常MysqlではなくMongoDBを使用するのはなぜですか?

  23. 23

    sizeof(!0)が4ではなく1を出力するのはなぜですか?

  24. 24

    PytorchがFloatTensorではなくDoubleTensorを期待するのはなぜですか?

  25. 25

    Rasa NLUがLSTMではなくSVMを使用するのはなぜですか?

  26. 26

    itoaがunsignedではなくsigned文字を期待するのはなぜですか?

  27. 27

    strtokがconstchar *ではなくchar *を使用するのはなぜですか?

  28. 28

    git show filenameがdiffを表示するのはなぜですか?

  29. 29

    FirefoxがSSL警告を表示するのはなぜですか

ホットタグ

アーカイブ