• Как сделать выпадающее меню на Laravel?

    @Yan-s
    Здесь будет всегда true, если в $sitemap есть хотя бы 1 элемент с parent > 0
    if($sitemap->where('parent', '>', 0)->count() > 0)

    Нужно изменить конструкцию так, чтобы проверка была по элементам у которых parent === $item->id например как в следующем foreach.
    Ответ написан
  • Как добавить в массив с json строкой еще одну строку?

    artzolin
    @artzolin
    php, WordPress разработка сайтов zolin.digital
    Не совсем понятно, что вы хотите сделать в итоге. Если вы добавляете какие-то данные в массив, то вы должны его сначала получить, а при добавлении проверять, нет ли в нем уже таких же данных, которые вам прилетают в $request. Обычно это делается по id или slug, но у вас ни того, ни другого нет, поэтому для примера соберем все заголовки $titles из полученного массива:

    $descriptionJson = json_decode(file_get_contents($path), true);
    
    $titles = array();
    foreach ( $descriptionJson as $key => $descriptionJsonValue ) {
    	$titles[] = $descriptionJsonValue['title'];
    }


    Теперь, видимо, вы делаете какой-то запрос и получаете ответ в виде объекта. Назову его $requests. Вам нужно получить кол-во элементов, чтобы добавлять новые с id+1 и проверять наличие заголовка в уже существующих данных:

    $count = count($requests); // получаем кол-во объектов для ключа
    
    foreach ( $requests as $key => $request ) {
    	if ( array_search($request->title, $titles) == false ) {
    		$count++;
    
    		$descriptionJson[$count]['title'] = $request->title;
    		$descriptionJson[$count]['thumbnail'] = ImageGenerator::imageDescriptions($request->file('photo'));
    		$descriptionJson[$count]['descriptions'] = $request->description;
    
    	}
    }
    
    $product->descriptions = json_encode($descriptionJson);
    $product->save();
    Ответ написан
  • В Git коммит попал файл большой >100 mb как удалить?

    dyuriev
    @dyuriev
    A posteriori
    Отвечу чуть подробнее чем спрашиваете:

    Конкретный файл (www/video/route.mp4):
    git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch www/video/route.mp4 ' --prune-empty --tag-name-filter cat -- --all

    Файл по маске (*.mp4):
    git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch "*.mp4" ' --prune-empty --tag-name-filter cat -- --all

    Директорию (www/video):
    git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch www/video -r' --prune-empty --tag-name-filter cat -- --all


    Данный способ не оптимальный, но универсальный - проверит всю историю коммитов и выпилит из коммитов данные файлы/каталоги и перепишет все что дальше

    Пуш форсом отправляем все ветки в репозиторий
    git push origin --force --all

    не забываем сообщить другим разрабам что надо сделать git reset --hard origin/...

    Warning: опробуйте сначала на тестовом репозитории (склонируйте текущий куда нибудь и потренируйтесь). Не хочу чувствовать себя виноватым, если вы выпилите что-то исторически-ценное
    Ответ написан