goodfriend писал(а): ↑2020.08.15, 08:57
Приветствую.
В доставшемся одном коде смотрю что они везде когда нужно указать имя таблицы, не указывают ее напрямую как в документации к from():
, а вытягивают имя через AR класс:
Код: Выделить всё
from(Pages::tableName() . ' page')->
leftJoin(Site::tableName() . ' site', 'site.id=page.website_id')->
В этом есть какой то реальный смысл?, кто то еще так делает?
Понятно что там имя если изменится таблицы, но обычно же такое не происходит
Есть смысл юзать наименования таблиц, но не в самих запросах, а при установке связей внутри моделей.
В данном случае, не нужно даже прописывать никаких алиасов, т.к. они уже прописаны в связи.
Код: Выделить всё
public function getMyClass() {
return $this->hasOne(MyClass::className(), ['myclass_id' => 'myclass_id'])->from([MyClass::TABLE_ALIAS => MyClass::tableName()]);
}
И если устанавливаем связь между одной и другой моделью.
Можно убрать from() и тоже будет работать корректно.
Код: Выделить всё
$query = FirstClass::find()
->select([FirstClass::TABLE_ALIAS . '.*', 'myclass_name', 'myclass_subname'])
->from([FirstClass::TABLE_ALIAS => FirstClass::tableName()])
->joinWith('myClass', false, 'LEFT JOIN')
;