JOIN

Join - это класс, который генерирует join фрагмент sql кода. Экземпляр класса получаем через фабрику (смотри раздел УСТАНОВКА).

Описание функций и методов

Метод Описание
__construct($settings, $mergeMethod, $table, $column, $outColumn)

Экземпляр класса создается в фабрике и при создании в конструктор передаются параметры:

  • $settings - массив настроек (смотри раздел УСТАНОВКА).
  • $mergeMethod - тип соединения таблиц для join. Может принимать только одно из следующих значений: inner, left, right, full, cross.
  • $table - таблица, которую будем join’ить.
  • $column - столбец с внешним ключом из таблицы $table.
  • $outColumn - столбец таблицы с которой join’им, должен записываться вместе с псевдонимом таблицы.
    Пр: p.id, где:
    p – псевдоним таблицы с которой join’им
    id – имя колонки (первичный ключ)
linkAnd($expression)

При создании экземпляра класса мы уже описали условие соединения таблиц, но бывает необходимо уточнить и расширить условие. Данная функция поможет это сделать.

$expressionмассив логических операций (смотри Where), условия между которыми соединены связью AND. Связь между основным условием соединения таблиц и $expression - также AND.

linkOr($expression)

При создании экземпляра класса мы уже описали условие соединения таблиц, но бывает необходимо уточнить и расширить условие. Данная функция поможет это сделать.

$expression – массив логических операций (смотри Where), условия между которыми соединены связью OR. Связь между основным условием соединения таблиц и $expression - также OR.

generate() Генерирует sql и массив биндов.
getAlias() Получить сгенерированный псевдоним таблицы.
getSql() Получить строку sql запроса, данные формируются после вызова функции generate().
getBind() Получить массив биндов. Данные формируются после вызова функции generate().

Примеры

Пример 1
    // Создаем экземпляры классов Join с помощью фабрики, подробнее
    // в документации в разделе УСТАНОВКА (здесь случай компонента для yii2).
    $coursework = Yii::$app->gp->leftJoin('coursework', 'student_id', 's.id')->generate();

    print_r($coursework->getAlias());
    // Результат:
    // coursework_joM9YuTTfW

    print_r($coursework->getSql());
    // Результат:
    // left JOIN coursework coursework_joM9YuTTfW ON  coursework_joM9YuTTfW.student_id  =  s.id

    print_r($coursework->getBind());
    // Результат:
    // []
Пример 2
    // Создаем экземпляры классов Join с помощью фабрики, подробнее
    // в документации в разделе УСТАНОВКА (здесь случай компонента для yii2).
    $coursework = Yii::$app->gp->innerJoin('coursework', 'student_id', 's.id')
                           ->linkAnd(['semester_number', '>', 2])
                           ->generate();

    print_r($coursework->getAlias());
    // Результат:
    // coursework_Nd1n5T7c0r

    print_r($coursework->getSql());
    // Результат:
    // inner JOIN coursework coursework_Nd1n5T7c0r ON coursework_Nd1n5T7c0r.student_id = s.id and (semester_number > :al_where_M1kEcHzZyy)

    print_r($coursework->getBind());
    // Результат:
    // [
    //    [al_where_M1kEcHzZyy] => 2
    // ]