Ответы пользователя по тегу MySQL
  • Что такое полиморфные связи?

    greabock
    @greabock
    Могу
    Предположим, что у Вас есть комментарий, который может относится к посту(пользователя), а может относится к статье блога.
    тогда у Вас таблица может выглядеть примерно так:
    comment_id | parent_id | morph| comment_content | author

    где:
    comment_id - идентификатор самого коммента
    parent_id - идентификатор сущности к которой он относится
    morph - тип сущности, к которой относится этот комментарий.
    comment_content, author - тут я думаю понятно
    тогда записи могут выглядеть так:
    comment_id | parent_id | morph   | comment_content | author
    ---------------------------------------------------------------
      1        |   1       | post    | бла бла бла     | vasya
    ---------------------------------------------------------------
      2        |   1       | article | бла бла бла     | vasya
    ---------------------------------------------------------------

    при чем, несмтря на то, что parent_id у них одинаковый, в первом случае он относится к id в таблице post, а во втором к article
    Это и называется полиморфической связью.

    пример приведу на фреймворке laravel для php (но ORM там очень схож с Rails, так-что проблем возникнуть не должно)
    Модель комментария будет выглядеть приблизительно так:

    class Comment extends Eloquent {
    
     public function morph()
      {
         return $this->morphTo();
      }
    
    }

    а модели поста и статьи:

    class Post extends Eloquent {
    
      public function photos()
      {
        return $this->morphMany('post', 'morph');
      }
    
    }

    class Article extends Eloquent {
    
      public function photos()
      {
        return $this->morphMany('article', 'morph');
      }
    
    }

    вроде бы ничего не напутал...
    Ответ написан
    1 комментарий
  • Как перенести статьи с MODX на Yii2?

    greabock
    @greabock
    Могу
    Ни разу не заглядывал в Ваш "модых", но здравый смысл подсказывает, что можно на внешнем ключе поля `parent` посмотреть, к чему именно оно относится.
    Ответ написан
    Комментировать
  • Как организовать структуру таблиц в БД?

    greabock
    @greabock
    Могу
    Правильная организация:
    goods
    айди, артикул, ... , и прочие данные общие для всех товаров с данным артикулом (например бренд или айди бренда (если бренды хранятся в отдельной таблице); возможно, ссылка на основное изображение).
    В общем, здесь описан непосредственно сам продукт, как таковой.

    goods_variants
    айди_варианта, айди_товара, опции товара, остаток.
    Здесь все сочетания возможных опций для товара, с определенным айди. А так же возможная уникальная информация для конкретных параметров (возможно, информация о том, что товар акционный - допустим скидка 50% на супер большие размеры - здесь айди акции или что-то такое).
    Например, если опции - это размер и цвет, то таблица в этом случае:
    айди, размер, цвет, остаток, и еще что-то уникальное для данного варианта товара (ссылка на изображение, если цвет отличается, к примеру).
    Само собой, сочетание полей айди+размер+цвет должно быть уникальным, во избежание дублей.

    Если возможных опций для товара слишком много (а возможно даже отсутствие одних опций и присутствие других), то нужно подумать об организации отдельной таблицы опций товаров, но это тема для отдельной дискуссии.
    Ответ написан
    6 комментариев
  • Почему при записи в MySQL отображаются каракули?

    greabock
    @greabock
    Могу
    Попробуйте копнуть в сторону mysql_set_charset() или ее аналога для Вашего драйвера соединения.
    Ответ написан