$input = $request->get('category', []);
foreach (Category::all() as $category) {
$category->roles()->sync(Arr::get($input, $category->id, []));
}
Как я делаю, но ничего не получается.
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);
}
@foreach ($roles as $role)
@foreach ($role->categories as $cat)
<td class="text-center">
<div class="form-check">
<input class="form-check-input" name="roles[{{$cat->id}}][]" type="checkbox"
value="{{$role->id}}" @if(in_array($role->id, $category->roles()->pluck('id')->all())) checked @endif>
</div>
</td>
@endforeach
@endforeach
<input class="form-check-input" name="permissions[{{$cat->id}}][{{$role->id}}]" type="checkbox"
value="1" @if(in_array($role->id, $category->roles()->pluck('id')->all())) checked @endif>
retrieveByCredentials
.$userId = Auth::user()->id; // Переменную плохо назвали. Это ID, а не пользователь
$editor = Pass::where('user_id', $userId)->first(); // А здесь редактор, не ID. Может быть NULL если не найдено.
// Нужно проверить, нашлась ли запись и совпали ли ID
//if ($editor && $userId == $editor->user_id) { }
// Но исходя из условия запроса, если запись нашлась, то ID уже совпали
// Значит достаточно такой проверки:
if ($editor) { }
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?route=$1 [QSA,L]
try {
// берем переданный роут
$route = trim($_REQUEST['route']??'index');
// проверяем, если в конце слеш, то это index роут
if (substr($route,'-1') == '/') $route.='index';
// минимальная защита от инклуда неожидаемых файлов
// ограничиваем имена до символов a-b, 0-9, тире, нижнее подчеркивание и слеш
if (!preg_match('~^[-a-z0-9/_]+$~i', $route)) throw new Exception('Not allowed route');
// генерим путь к файлу
$filePath = dirname(__FILE__).'/pages/'.$route.'.php';
// если не существует выкидываем ошибку
if (!file_exists($filePath)) throw new Exception('Route not found');
// если существует, инклудим файл
include $filePath;
} catch (Throwable $ex) {
// в случае любых ошибок, показываем 404
// тут обычно делают разные типы эксепшенов и разделяют 400 и 500 ошибки
include dirname(__FILE__).'/pages/404.php';
}
--incognito
для запуска в соответствующем режиме.$arr1 = [
1 => ['id' => 1, 'name' => 'DJ'],
2 => ['id' => 2, 'name' => 'Bass'],
3 => ['id' => 3, 'name' => 'Vocal'],
];
$arr3 = array();
foreach ( $arr1 as $key => $arr1_value ) {
$arr3[$arr1_value['id']] = $arr1_value['name'];
}
$arr2 = [
['name' => 'Alex', 'specId' => 1],
['name' => 'Tim', 'specId' => 2],
['name' => 'Dave', 'specId' => 3],
];
echo '<ul>';
foreach ( $arr2 as $key => $arr2_value ) {
echo '<li>' . $arr3[$arr2_value['specId']] . '</li>';
}
echo '</ul>';
$arr1 = [
1 => ['id' => 1, 'name' => 'DJ'],
2 => ['id' => 2, 'name' => 'Bass'],
3 => ['id' => 3, 'name' => 'Vocal'],
];
$arr2 = [
['name' => 'Alex', 'specId' => 1],
['name' => 'Tim', 'specId' => 2],
['name' => 'Dave', 'specId' => 2],
];
$result = [];
foreach ($arr1 as $arr1_item) {
foreach ($arr2 as $arr2_item) {
if ($arr1_item['id'] == $arr2_item['specId']) {
$result[$arr1_item['id']] = $arr1_item['id'];
}
}
}
var_export($result);
$arr1 = [
1 => ['id' => 1, 'name' => 'DJ'],
2 => ['id' => 2, 'name' => 'Bass'],
3 => ['id' => 3, 'name' => 'Vocal'],
];
$arr2 = [
['name' => 'Alex', 'specId' => 1],
['name' => 'Tim', 'specId' => 2],
['name' => 'Dave', 'specId' => 2],
];
$result = array_filter($arr1, function ($item1) use ($arr2) {
return in_array(
true,
array_map(function ($item2) use ($item1) {
return $item2['specId'] == $item1['id'];
}, $arr2)
);
});
var_export($result);
/**
* @Route("/category/{category}", name="category")
*/
public function category(Category $category)
{
return $this->render('default/category.html.twig', [
'category' => $category,
'posts' => $this->getDoctrine()->getManager()->getRepository(Post::class)->findBy(['category' => $category])
]);
}
{% for tag in post.tags %}