@evgen9586
Backend-dev. Лублу Enterprise и не люблю понты)

Как получить объект со связанными данными?

Есть две таблицы. Категории и врачи. Чтобы не мучаться связь один ко многим.
Модель Category
use yii\db\ActiveRecord;

class Category extends ActiveRecord
{
    public static function tableName()
    {
        return 'category';

    }
    public function getDoc()
    {
        return $this->hasMany(Doctor::className(), ['category_id'=> 'id']);
    }


}
Модель Doctor
use yii\db\ActiveRecord;

class Doctor extends ActiveRecord
{
    public static function tableName()
    {
        return 'doctors';
    }
    public function getCategory()
    {
        return $this->hasOne(Category::className(), ['id'=> 'category_id']);
    }

}


Имеется две модели. В чём суть.
Создан виджет. И в виджете в методе run() хочу получить объект, преобразованный в массив где в у каждой категории по связи как чайлд или нечто подобное приплетаются врачи

Массив категорий получить просто
public function run()
    {
        $this->data=Category::find()->indexBy('id')->asArray()->all();
        debug($this->data2);
        return $this->tpl;

    }


Но как получить именно более сложный массив с категориями и врачами?

Дальше смысл формировать список категорий и вложенный список врачей в каждую категорию через foreach.
  • Вопрос задан
  • 55 просмотров
Решения вопроса 1
$this->data=Category::find()->with(['doc'])->indexBy('id')->asArray()->all();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы