Я пишу так:
/**
* @return array|null|User
*/
public function getUser() {
return $this->hasOne(User::className(), ['id' => 'user_id'])->one();
}
А в примерах везде возвращают без ->one
только запрос. Аналогично и с hasMany (только там ->all()
). Как правильнее? Просто когда возвращаешь объект, а не запрос - можно за счет phpdoc подставить тайпхинты в IDE. Это очень удобно. Но с другой стороны порой приходится дублировать код когда в другом месте надо ту же связь, но с изменением запроса (например условие добавить). Правда редко.
Писать можно и так и так. В классе BaseActiveRecord переопределен __get, когда вы обращаетесь к $model->user обрабатывается такой кусок кода:
...
$value = parent::__get($name);
if ($value instanceof ActiveQueryInterface) {
return $this->_related[$name] = $value->findFor($name, $this);
} else {
return $value;
}
...
Из него видно что если вы в релейшене вернули запрос она его выполнит findFor, а если уже готовый результат, то просто вернет его. Определеяется это по наличию интерфейса.
Как писать с точки зрения веры вам решать.
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Есть функция отправки email-уведомлений на почту администратораФункция рабочая (уведомление приходит), но она срабатывает каждый раз когда...
Для моего сайта я настроил все, кроме resultphp, на который отправляется запрос после успешной оплаты
Есть скрипт в папке с Joomla, точнее /var/www/html/joomla/images/filephp