За последние 24 часа нас посетили 25028 программистов и 2020 роботов. Сейчас ищут 930 программистов ...

Цикл не выводятся данные.

Тема в разделе "PHP для новичков", создана пользователем Михаил Запаленов, 3 ноя 2017.

  1. Михаил Запаленов

    С нами с:
    2 авг 2017
    Сообщения:
    120
    Симпатии:
    1
    Что нужно? Получить id которые есть у тикета и которых нет.

    Код.

    $allCategories = Categories::all();

    $ticket = Tickets::find(request('id'));

    foreach ($allCategories as $category) {
    if (array_key_exists($category->id,$ticket->categories->toArray())) {
    dump($category->name);
    } else {
    }
    }

    И так

    if (array_key_exists($category->id,$ticket->categories->toArray())) {
    dump($category->name);

    В данном случае я получаю только значение единственной категории, когда их установлено две.

    А в случае else я получаю одну установленную у тикета и одну не установленную, а нужно чтобы я получал в условии if - установленные категории а в else не установленные.

    Что дает dump?

    $category->id
    1
    2
    3

    $ticket->categories->toArray()

    array:2 [▼
    0 => array:4 [▼
    "id" => 1
    "name" => "Срочно"
    "slug" => "srochno"
    "pivot" => array:2 [▶]
    ]
    1 => array:4 [▼
    "id" => 2
    "name" => "Важно"
    "slug" => "vajno"
    "pivot" => array:2 [▶]
    ]
    ]
    --- Добавлено ---
    Я кстати понял почему потому-что он находит значение массива 1, который получается многомерный а не id.
    --- Добавлено ---
    Или нет)
     
  2. Михаил Запаленов

    С нами с:
    2 авг 2017
    Сообщения:
    120
    Симпатии:
    1
    Я фрилансер костыли наше все!

    foreach($allCatsArr as $catArr) {
    $allCats[$catArr->id] = $catArr->name;

    foreach ($ticket->categories as $category) {

    if(array_key_exists($category->id, $allCats)) {
    dump($catArr->name);
    unset($category->id);
    unset($catArr->name);
    } else {
    if ($catArr->name != null) {
    dump($catArr->name);
    }
    unset($category->id);
    unset($catArr->name);
    }
    }

    }
    --- Добавлено ---
    Хотя тоже не то он очень баганно работает) В случае указанных всех категорий он выводит что одна указанна а две не указанны)
     
  3. Михаил Запаленов

    С нами с:
    2 авг 2017
    Сообщения:
    120
    Симпатии:
    1
    Метод отдачи шаблона

    $allCatsArr = Categories::all();

    $ticket = Tickets::find(request('id'));


    foreach ($ticket->categories as $categoryUser) {
    $categUser[$categoryUser->id] = $categoryUser->name;
    }

    return view('edit_ticket', compact('ticket', 'allCatsArr', 'categUser'));

    Сам код в шаблоне.

    @foreach($allCatsArr as $catArr)
    <div class="hide">{{ $allCats[$catArr->id] = $catArr->name }}</div>

    @if($allCats[$catArr->id] == @$categUser[$catArr->id])
    {!! Form::checkbox('categories[]', count($allCats), ['checked' => true]) !!}
    {!! $allCats[$catArr->id] !!}
    @else
    {!! Form::checkbox('categories[]', count($allCats)) !!}
    {!! $allCats[$catArr->id] !!}
    @endif

    @endforeach