• Laravel - как вывести данные из одной таблицы на основе второй?

    @AlexRudkowskij
    Студент
    Пример:
    https://gist.github.com/AlexeyRudkovskiy/9fb4fcfd3...
    В начале каждого файла в комментарии указан путь где он находится.

    Далее пишете так:
    $product = App\Product::find(1); // Поулчаем запись с id = 1
    foreach ($product->categories as $category) {
        // Делаете что хотите с категориями этого товара
    }


    Тоже самое можно сделать и с категориями:
    $category = App\Category::find(1); // Поулчаем запись с id = 1
    foreach ($category->products as $product) {
        // Продукты в категории
    }


    Добавляем запись в категорию:
    $product = ...;
    $category = App\Category::find(1); // Для примера будем использовать категорию с id = 1
    $category->products()->attach($product->id);


    Или добавляем несколько записей за раз:
    $category = App\Category::find(1); // Для примера будем использовать категорию с id = 1
    $category->products()->attach([1, 2, 3]); // Добавляем товары с id = 1, 2, 3 в категорию с id = 1


    Удаляем продукты из категории:
    $category = App\Category::find(1); // Для примера будем использовать категорию с id = 1
    $category->products()->detach(1); // Удаляем продукт с id = 1 из категории с id = 1. Так же можно передать массив для удаления сразу нескольких продуктов из категории


    Всё описанное выше работает в обе стороны, т.е. можно таким же образом продукту добавлять и удалять категории(аналогично каждому из примеру, см. первый и второй пример)
    Ответ написан
    1 комментарий
  • Как сделать поиск записи в бд и отменить повторную отправку формы в бд Laravel 6?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    1) нет формы в вопросе, но не суть...
    2) юзайте POST вместо GET
    2.1) if ($_SERVER['REQUEST_METHOD'] === 'POST') {...
    2.2) header('location: /');

    Отдельным пунктом - не вставлять данные пришедшие от пользователя без обработки в запросы.

    UPD: $checkDB у вас вернет true (на самом деле непустой объект запроса) если пользователь уже есть, и вы ЕЩЕ РАЗ добавляете запись... Найс...
    Ответ написан
    Комментировать
  • Как сделать поиск записи в бд и отменить повторную отправку формы в бд Laravel 6?

    daemonhk
    @daemonhk
    ПсиХоПат
    1. НИКОГДА не используйте напрямую гет и пост без обработки, делайте экранирование, приводите к нужному типу, и т.д.
    2. ЖЕЛАТЕЛЬНО сравнивать данные не напрямую, а их хэши
    3. Не используйте global - запросто можете затереть переменную, а потом удивляться результату
    4. Учитесь дебажить, а не бежать на тостер по любому чиху, например, у вас каждый раз добавляется запись, значит, условие $checkDB всегда срабатывает. Почему? Смотрите голые запросы в pma, что вам приходит, с чем сравниваете, и т.д.
    5. Получение данных делайте перед отрисовкой страницы, а не во время
    Ответ написан
    Комментировать
  • Как сделать поиск записи в бд и отменить повторную отправку формы в бд Laravel 6?

    @Terran37
    Программист
    У вас три варианта.
    1. Сделать проверку, что такой user_id уже передавался и не делать insert(через связанные сущности)
    2. Сделать проверку на дубли констрейнтом на уровне бд при сохранении.
    3. Сделать новое поле и ставить пометку, что данные по этому юзеру уже получили.
    Ответ написан
    1 комментарий
  • Можно ли сократить как нибудь код js?

    @Mysianio
    вайти в айти
    Все document.getElementById('selector') заменить на переменные, вы очень часто их используете
    Напрмиер:
    let manabtc = doucment.getElementById('MANABTC')
    ...
    manabtc.style.display = ...
    ...

    А раз вы еще используете и JQuery судя по $, то можете сделать так:
    let manabtc = $('#MANABTC')

    А так же в самом начале 'change' евента, прописать всем опциям display='none'.
    А потом через if менять стиль дисплея только 1 элементу
    Например:
    a.style.display ='none'
    b.style.display ='none'
    c.style.display ='none'
    d.style.display ='none'
    if(a){
       a.style.display='block'
    }
    if(b){
       b.style.display='block'
    }

    И так далее

    Вуляля, ваш код сократился в 2-3 раза
    P.S. Сверху эксперт по JQuery, так что лучше сделать, как написал он, мой вариант больше подходит для нативного js
    Ответ написан
    Комментировать
  • Можно ли сократить как нибудь код js?

    twobomb
    @twobomb
    $(function(){
      $("#sel").change(function(){
        $("#BNBUSDT,#MANABTC,#MANAETH,#BNBBTC").css("display","none");
        $("#"+$(this).val()).css("display","block");
      });
    });


    P.S. Для любителей нативного js

    window.onload = () =>{
      document.all.sel.onchange =(e) => {
        document.querySelectorAll("#BNBUSDT,#MANABTC,#MANAETH,#BNBBTC").forEach((e) =>{
        	e.style.display = "none";
        });
        document.querySelector("#"+e.srcElement.value).style.display = "block";
      };
    }
    Ответ написан
    Комментировать
  • Как построить график валют с сайта binance?

    Ну, через API надо тянуть данные и каким-нибудь Chart.js рендерить их.
    Ответ написан
    1 комментарий