Я хочу перебрать модель с этой структурой:
{
"id_coretable": 1,
"Internal_key": "UPDATED1",
"extensiontable_itc": {
"description_itc": "UPDATED1"
},
"extensiontable_sysops": {
"description_sysops": "UPDATED1"
}
}
Он был получен с этим кодом:
$join = coretable::with($permittedTables)->find(1);
Где $permittedTables
- это массив имен таблиц.
Теперь, когда я делаю это:
foreach($join as $el){
log::info($el);
}
Я получаю следующие результаты:
[2020-02-06 11:32:36] local.INFO: 1
[2020-02-06 11:32:36] local.INFO: 1
[2020-02-06 11:32:36] local.INFO:
[2020-02-06 11:32:36] local.INFO: 1
Почему это так? Согласно Laravel документам, перебор КОЛЛЕКЦИИ должен определенно работать:
$users = App\User::where('active', 1)->get();
foreach ($users as $user) {
echo $user->name;
}
См. https://laravel.com/docs/5.8/eloquent-collections
Теперь у меня определенно есть Модель, не коллекция. Я проверил это с if(...instanceof model)
. Тем не менее, когда я принудительно извлекаю коллекцию, используя ->findMany(1)
вместо ->find(1)
, тогда вещи не становятся лучше. Использование коллекции на foreach l oop заставляет foreach только l oop выводить полную структуру один раз, а затем оставлять l oop. Если я теперь использую этот объект внутри вложенного foreach l oop, то получу те же результаты, что и выше.
Это нормальное поведение laravel? И если да, есть ли способ перебрать модель, особенно «2D-модель», как здесь?
Итог: чего я в конечном итоге хочу достичь, так это способности «динамически» назначать новые значения любому элементов модели, а затем сохранить его в БД. Если для этой цели я должен перезаписать вложенные «массивы» внутри модели новыми массивами, то так и будет, просто скажите мне, как это сделать xD Вход, который должен обновлять модель, будет иметь ТОЧНУЮ структуру и индексы, как модель. Вы также можете прочитать об этом в моем другом вопросе здесь: Laravel / Lumen / Eloquent - обновить coretable :: with ($ OneDimArrayOfTablenames) с многомерным массивом
В настоящее время я просто пытаюсь приблизиться решение по крупицам, так как этот вопрос не получил никаких ответов. И первое, что мне пришло в голову, это попытаться повторить модель и обновить ее поэлементно. Но, как вы видите, у меня тоже есть проблемы с этим .. ^^