EloquentORMでデータベースをクエリするときの配列インデックスの問題

ルイチャールズ

このメソッドを実行すると問題が発生します:

    public function getNutritionalValuesPerMeal($item,$nutritionalValues){

        foreach (array($nutritionalValues) as $key => $value) {
            if (array_key_exists($key, $item->nutritionalValue->attributes)) {
                $nutritionalValues[$key] += $item->nutritionalValue->attributes[$key];
            }
        }
        return $nutritionalValues;
    }

スローされる例外は次のとおりです。 ここに画像の説明を入力してください

変数をddすると、これが得られました。

  • $ item-> nutritionalValueの場合:

ここに画像の説明を入力してください

  • $ item-> nutritionalValue ['calories']の場合:

ここに画像の説明を入力してください

  • $ nutritionalValuesの場合:

ここに画像の説明を入力してください

私が理解していないのは、$ item-> nutritionalValue ['calories']が正しくddであるのに、コンソールがカロリーのインデックスが見つからないと言っていることです。奇妙なことは、その行に例外がスローされないことです。

$nutritionalValues['weight'] = $nutritionalValues['weight'] + $item->nutritionalValue['weight'];

私はEloquent関係を使用して、成分との関係であるnutritionalValueをフェッチします。

助けてくれてありがとう !

編集:ループ内で関数を呼び出しています:

public function getNutritionalValuesPerDay($mealNutritionalValues,$items,$day){
    foreach($items as $item){
        switch ($item->pivot->meal) {
            case "Breakfast":
                $mealNutritionalValues["Breakfast"] = $this->getNutritionalValuesPerMeal($item,$mealNutritionalValues["Breakfast"]);
                break;
            case "Snack 1":
                $mealNutritionalValues["Snack 1"] = $this->getNutritionalValuesPerMeal($item,$mealNutritionalValues["Snack 1"]);
                break;
            case "Lunch":
                $mealNutritionalValues["Lunch"] = $this->getNutritionalValuesPerMeal($item,$mealNutritionalValues["Lunch"]);
                break;
            case "Snack 2":
                $mealNutritionalValues["Snack 2"] = $this->getNutritionalValuesPerMeal($item,$mealNutritionalValues["Snack 2"]);
                break;
            case "Dinner":
                $mealNutritionalValues["Dinner"] = $this->getNutritionalValuesPerMeal($item,$mealNutritionalValues["Dinner"]);
                break;
        }
    }
    return $mealNutritionalValues;
}

そして今、私はエラーがあります: ここに画像の説明を入力してください

このメソッドに送信される各配列は同じであるため、これがどのように可能かわかりません...

編集2:問題は解決しました!

Aydin4ik

メソッドのスコープとコンテキストを知らなくても、属性にアクセスする最も安全な方法は$item->nutritionalValue->attributes['calories']、などです。詳細:https//laravel.com/docs/6.x/eloquent-mutators#attribute-casting

なぜdd()その属性にアクセスできるのですか?それは、オブジェクトに対してdd()ある種のget()メソッドを実行するためです。

それとは別に、私はあなたのメソッドを次のようにリファクタリングします:

public function getNutritionalValuesPerMeal($item, $nutritionalValues)
{
    foreach ($nutritionalValues as $key => $value) {
        if (array_key_exists($key, $item->nutritionalValue->attributes)) {
            $nutritionalValues[$key] += $item->nutritionalValue->attributes[$key];
        } 
    }
    return $nutritionalValues;
}

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

MVC RazorでデータベースからデータをフェッチするときのLINQクエリのパフォーマンスの問題

分類Dev

(実際のSQL削除クエリを使用して)データベースからデータを削除すると、テーブルデータのインデックスの再作成で大きな問題が発生しますか?

分類Dev

Laravelデータベースクエリをインデックス付きのphp配列に入れるにはどうすればよいですか?

分類Dev

MySQL / MariaDBデータベースのインデックスをクエリすることは可能ですか?

分類Dev

配列Javaを作成するときのデフォルトのコンストラクターの問題

分類Dev

ボタンクリックでデータベースを更新するPHPの問題

分類Dev

変数でインデックスを作成するときのSD []のパフォーマンスの問題

分類Dev

データベースクエリに関するPHPとMySQLの問題

分類Dev

配列インデックスデータをデータベースの別の行に保存する方法は?

分類Dev

配列内の特定のインデックスをクエリできますか?マングース

分類Dev

2つのチェックボックス間のリンクの問題、すべきでないときにデータを挿入する

分類Dev

クエリできる多くのフィールドのFirebaseデータベースインデックス

分類Dev

配列をループするときのjqエラー:文字列「<key>」で配列にインデックスを付けることができません

分類Dev

Intershop7-データベースに新しいインデックスを追加する際の問題

分類Dev

VUEjsで配列内のデータのインデックスを取得する

分類Dev

異なるインデックスでクエリするときのデータの不一致

分類Dev

別のデータベースから実行するときのクエリのパフォーマンスの問題

分類Dev

AndroidでSQLiteデータベースをクエリするときのJavaNullPointer例外

分類Dev

配列リストをインデックスとして使用してデータセットから20枚の画像をプロットするために配列を反復処理する際の問題

分類Dev

ndbデータストアクエリカーソルとインデックス作成の問題

分類Dev

mysqlデータベースからデータを出力するときに未定義のインデックス?

分類Dev

配列のエッジメンバーをトラバースしているときに配列インデックスが範囲外です

分類Dev

Oracleデータベースクエリの問題-データの挿入に関する問題

分類Dev

ms access2010データベースのSelectクエリでBetweenを使用する際の問題

分類Dev

vhdlのforループでインデックスにアクセスすることは可能ですか?エラー:インデックス付きの名前プレフィックスタイプnatrualは配列タイプではありません

分類Dev

ベクター配列内のベクター配列にインデックスを付ける方法

分類Dev

mysqlデータベースをJavaベースのWebアプリにリンクする際の問題

分類Dev

sqlAlchemyを使用してデータベースでSQLクエリを実行する際の問題

分類Dev

息子のメタデータバリデーター配列にカスタムPropertyValidatorを追加すると、RadDataFormが配列インデックス挿入エラーで失敗する

Related 関連記事

  1. 1

    MVC RazorでデータベースからデータをフェッチするときのLINQクエリのパフォーマンスの問題

  2. 2

    (実際のSQL削除クエリを使用して)データベースからデータを削除すると、テーブルデータのインデックスの再作成で大きな問題が発生しますか?

  3. 3

    Laravelデータベースクエリをインデックス付きのphp配列に入れるにはどうすればよいですか?

  4. 4

    MySQL / MariaDBデータベースのインデックスをクエリすることは可能ですか?

  5. 5

    配列Javaを作成するときのデフォルトのコンストラクターの問題

  6. 6

    ボタンクリックでデータベースを更新するPHPの問題

  7. 7

    変数でインデックスを作成するときのSD []のパフォーマンスの問題

  8. 8

    データベースクエリに関するPHPとMySQLの問題

  9. 9

    配列インデックスデータをデータベースの別の行に保存する方法は?

  10. 10

    配列内の特定のインデックスをクエリできますか?マングース

  11. 11

    2つのチェックボックス間のリンクの問題、すべきでないときにデータを挿入する

  12. 12

    クエリできる多くのフィールドのFirebaseデータベースインデックス

  13. 13

    配列をループするときのjqエラー:文字列「<key>」で配列にインデックスを付けることができません

  14. 14

    Intershop7-データベースに新しいインデックスを追加する際の問題

  15. 15

    VUEjsで配列内のデータのインデックスを取得する

  16. 16

    異なるインデックスでクエリするときのデータの不一致

  17. 17

    別のデータベースから実行するときのクエリのパフォーマンスの問題

  18. 18

    AndroidでSQLiteデータベースをクエリするときのJavaNullPointer例外

  19. 19

    配列リストをインデックスとして使用してデータセットから20枚の画像をプロットするために配列を反復処理する際の問題

  20. 20

    ndbデータストアクエリカーソルとインデックス作成の問題

  21. 21

    mysqlデータベースからデータを出力するときに未定義のインデックス?

  22. 22

    配列のエッジメンバーをトラバースしているときに配列インデックスが範囲外です

  23. 23

    Oracleデータベースクエリの問題-データの挿入に関する問題

  24. 24

    ms access2010データベースのSelectクエリでBetweenを使用する際の問題

  25. 25

    vhdlのforループでインデックスにアクセスすることは可能ですか?エラー:インデックス付きの名前プレフィックスタイプnatrualは配列タイプではありません

  26. 26

    ベクター配列内のベクター配列にインデックスを付ける方法

  27. 27

    mysqlデータベースをJavaベースのWebアプリにリンクする際の問題

  28. 28

    sqlAlchemyを使用してデータベースでSQLクエリを実行する際の問題

  29. 29

    息子のメタデータバリデーター配列にカスタムPropertyValidatorを追加すると、RadDataFormが配列インデックス挿入エラーで失敗する

ホットタグ

アーカイブ