JOIN
Join - это класс, который генерирует join фрагмент sql кода. Экземпляр класса получаем через фабрику (смотри раздел УСТАНОВКА).
Описание функций и методов
| Метод | Описание |
|---|---|
| __construct($settings, $mergeMethod, $table, $column, $outColumn) |
Экземпляр класса создается в фабрике и при создании в конструктор передаются параметры:
|
| linkAnd($expression) |
При создании экземпляра класса мы уже описали условие соединения таблиц, но бывает необходимо уточнить и расширить условие. Данная функция поможет это сделать. $expression – массив логических операций (смотри Where),
условия между которыми соединены связью AND. Связь между основным условием соединения
таблиц и |
| linkOr($expression) |
При создании экземпляра класса мы уже описали условие соединения таблиц, но бывает необходимо уточнить и расширить условие. Данная функция поможет это сделать. $expression – массив логических операций (смотри Where),
условия между которыми соединены связью 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
// ]