deadloop
@deadloop
Активно осваиваю PHP

Как правильно оформить перебор (foreach) в контроллере?

Добрый всем. У меня есть метод, для категории 1 присваиваются роли 2,3,4. Как правильно оформить foreach, когда данные будут приходить такие (динамические, из формы) ($roles = $request->category;):

array:3 [▼
  1 => array:3 [▼
    2 => "2"
    3 => "3"
    4 => "4"
  ]
  2 => array:2 [▼
    3 => "3"
    4 => "4"
  ]
  3 => array:2 [▼
    1 => "1"
    2 => "2"
  ]
]


public function update(Request $request) {
        $categories = Category::with('roles')->find(1);
        $categories->roles()->sync([2,3,4]);
        return view('home');
    }
  • Вопрос задан
  • 232 просмотра
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега Laravel
Вам нужно вернуться к учебнику и учиться понимать, что происходит в вашем коде, а не бездумно переставлять буковки, в надежде, что что-то получится.

Как я делаю, но ничего не получается.
foreach($roles as $cat => $role) {
  $categories = Category::with('roles')->find($cat);
  $data[] = $role;
}
$categories->roles()->sync($data);

Почему вы переменную называете $categories, хотя она содержит ровно одну категорию, найденную по ID?
Зачем вы подгружаете роли категории?
Почему вы переменную называете $role, хотя она содержит массив ролей, которые вы выше дампнули?
Почему вы с переменной $categories работаете вне цикла, в котором она создаётся?

foreach($request->category as $categoryId => $roles) {
  Category::find($categoryId)->roles()->sync($roles);
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы