Как повторить эту многомерную коллекцию в Laravel - PullRequest
2 голосов
/ 08 июля 2019

здесь впервые, я скрывался и много искал, но на этот раз возникли проблемы с коллекцией Laravel.Пытаюсь повторить foreach для этого многомерного коллекционного массива, но я понятия не имею, как.

Я пытался изменить много способов отображения, о которых я знаю.но безрезультатно, надеюсь получить некоторое представление, чтобы, вероятно, изменить мой метод или что-то еще.

Код для получения из базы данных

$l = [];
for($i = 0; $i < count($request->products); $i++){
    $l[] = [
          'locaction_id' => $request->products[$i]['location'],
        ];
    $locations[] = DB::table('locations')->select('*')->whereIn('location_id',$l)->get();
};

Код, используемый для отображения массивов, пробовал$location->stuff и $location[0][0]['location_id'] выходят с ошибкой

$location->location_id, ошибка вывода:

невозможно найти location_id.

$location[0][0]['location_id']и $location['location_id'] выдает:

Ошибка StdClass или не удается найти location_id.

foreach($locations as $key => $location){
   echo $key. "&nbsp; -" .$location->location_id. "<br>";
};

Возвращенный массив из базы данных

array:2 [▼
  0 => Collection {#662 ▼
    #items: array:1 [▼
      0 => {#660 ▼
        +"location_id": 1
        +"loc_name": "A0001"
        +"loc_desc": "Cabinet A North"
        +"created_at": "2019-07-05 10:31:12"
        +"updated_at": null
      }
    ]
  }
  1 => Collection {#688 ▼
    #items: array:1 [▼
      0 => {#686 ▼
        +"location_id": 1
        +"loc_name": "A0001"
        +"loc_desc": "Cabinet A North"
        +"created_at": "2019-07-05 10:31:12"
        +"updated_at": null
      }
    ]
  }
]

Хорошов надежде получить результаты цикла для каждого массива.

1 Ответ

0 голосов
/ 08 июля 2019

Вы можете изменить свой подход следующим образом:

// first fetch all location ids in array
$locationIds = array_column($request->products, "location");
// pass all location ids to fetch data
$locations   = DB::table('locations')->select('*')->whereIn('location_id', $locationIds)->get();
// do foreach loop to fetch that data
foreach($locations as $key => $location){
   echo $key. "&nbsp; -" .$location->location_id. "<br>";
}

Если по какой-то причине вы пишете свой фрагмент,

for ($i = 0; $i < count($request->products); $i++) {
    $l           = $request->products[$i]['location'];
    // I change it to first instead of get
    $locations[] = DB::table('locations')->select('*')->where('location_id', $l)->first();
}
// do foreach loop to fetch that data
foreach ($locations as $key => $location) {
    echo $key . "&nbsp; -" . $location->location_id . "<br>";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...