это все реализуется с помощью relation - они бывают как 1 к 1 (hasOne) и как 1 ко многим (hasMany)
в моделе Sources прописываешь
public function getContact ()
{
return $this->hasOne(Sources ::className(), ['source_id' => 'id']);
}
потом в запросом
$source = Source::find()->joinWith(['contanct'])->one();
в итоге модель контактов доступна в
$source->contact
или
$source->getContact()->one()
мыло соответственно
$source->contact->email
у Contacts свои релейшены
вообще можешь открыть /gii/models и ввести имя таблицы - гненерато сам сгенерирует если в бд прописаны fk верно
https://yiiframework.com.ua/ru/doc/guide/2/db-active-record/
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker