@evgen9586
Изучаю Back-end программирование

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

Есть две таблицы. Категории и врачи. Чтобы не мучаться связь один ко многим.
Модель 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.
  • Вопрос задан
  • 54 просмотра
Решения вопроса 1
$this->data=Category::find()->with(['doc'])->indexBy('id')->asArray()->all();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
Max.Credit Санкт-Петербург
от 150 000 до 150 000 руб.
Willz Москва
от 150 000 руб.
Fmedia Санкт-Петербург
от 40 000 до 100 000 руб.
14 авг. 2018, в 22:43
350 руб./за проект
14 авг. 2018, в 19:03
10000 руб./за проект
14 авг. 2018, в 18:10
1000 руб./в час