За последние 24 часа нас посетили 21857 программистов и 1071 робот. Сейчас ищут 650 программистов ...

Связь таблиц в Mysql и вывод. Yii2

Тема в разделе "PHP для новичков", создана пользователем gbushmakin, 20 июн 2019.

  1. gbushmakin

    gbushmakin Новичок

    С нами с:
    20 июн 2019
    Сообщения:
    22
    Симпатии:
    0
    Добрый день, уважаемые! У меня есть некоторый опыт в php, mysql, недавно занялся изучением Yii2. Сейчас делаю программу под себя. Столкнулся с некоторой сложностью...
    К примеру, у меня есть 2 таблицы, которые по всей видимостью нужно связать между собой. Для чего это делаю... Есть таблица, например TOVARS и есть таблица HARAKTERISTIKS.
    В первой таблицы содержатся товары - их наименования, количества, артикулы и прочее...
    Во второй таблице будут содеражатся характеристики этих товаров.
    А связаны они должны по ID.
    Теперь. Для того, чтобы мне выводить товары с их характеристиками, названиями, количествами и т.д., мне нужно будет иметь какую-то между ними связь. Связывать их, как я понимаю, нужно в MySQL путем Индексов.
    Далее. Какой мне теперь запрос необходимо выполнять (на Yii2), для того чтобы например на странице товара выводилось это всё вместе? А ТАК ЖЕ при ПОИСКЕ выполнялся поиск по двум таблицам и связывался результат между собой по ID (таблицы 1+ таблица 2).
    Пробовал гуглить, там много информации, каждый со своими примерами, в голове у меня не укладывается, а вопрос можно сказать требует достаточно быстрого решения, во времени ограничен. Надеюсь на помощь)
     
  2. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    ФИГНЯС :)

    В данном случае можно выбрать список характеристик отдельным запросом по id товара. При этом характеристики отдельного товара можно группировать в одну запись результ. выборки при помощи агрегатной ф-ции GROUP_CONCAT. Либо сортировать характеристики по id товара, если выбираются характеристики более чем для одного товара (для списка, а не для карточки).
     
  3. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    @gbushmakin yii тут не причем, вам нужно знать sql запросы. Но вот все же на yii для примера запрос в модели:
    PHP:
    1. <?php
    2.  
    3. namespace app\models;
    4.  
    5. use Yii;
    6. use yii\db\ActiveRecord;
    7. use yii\db\Query;
    8.  
    9. class ModelView extends ActiveRecord{
    10.  
    11.     public function getTable1(){
    12.         $query = new Query;
    13.         $query->select('TV.tv_id , HR.hr_id');
    14.         $query->from('TOVARS as TW');
    15.         $query->leftjoin('HARAKTERISTIKS as HR', 'HR.tv_id = TV.tv_id');
    16.  
    17.         return $query->all();
    18.     }
    19. }
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.554
    Симпатии:
    1.754
    @gbushmakin, так опиши, какой это тип связи для начала. А потом уже запросики можно будет делать. Все вопросы, которые ты поставил, решаются именно средствами БД. Архитектуру твою я не понял. У тебя там EAV, или каждый раз имя характеристики по новой, или что?
     
  5. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    @Artur_hopf, ты вообще в курсе, как работает/в каких случаях применяется LEFT JOIN?
    --- Добавлено ---
    Я так понял.
     
  6. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405