<?php
namespace app\models;
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']);
}
}
<?php
namespace app\models;
use yii\db\ActiveRecord;
class Doctor extends ActiveRecord
{
public static function tableName()
{
return 'doctors';
}
public function getCategory()
{
return $this->hasMany(Category::className(), ['id'=> 'category_id']);
}
}
Так же делаю виджет для вывода данных аккордеоном.
Как сделать вывод так чтобы под каждой категорией были свои врачи?
public function run()
{
$this->data=Category::find()->indexBy('id')->asArray()->all();
$this->data2=Doctor::find()->indexBy('id')->asArray()->all();
debug($this->data);
return $this->tpl;
}
class Category extends ActiveRecord
{
public static function tableName()
{
return ['category' , 'doctors'];
}
public function getDoc()
{
return $this->hasMany(Doctor::className(), ['category_id'=> 'id']);
}
}
А то ругалась на несуществующую таблицу doctors.
Но теперь новая ошибка strpos() expects parameter 1 to be string, array given
class Category extends ActiveRecord
{
public static function tableName()
{
return ['category'];
}
public function getDoc()
{
return $this->hasMany(Doctor::className(), ['category_id'=> 'id']);
}
}
Я отдельно проверял, что оно возврщает. Там красивый массив с данными, но только с данными одной таблицы
если вы даже не понимаете что должен возвращать метод tableName()
тогда дальше объяснять тяжело
Понимаю, я для чего он нужен и зачем. Да там кое где неверно написал. tableName() нужен в случае если Модель названа не по имени таблицы. Ну и просто для правильности. Так как tableName() объявляет имя таблицы базы данных.
shnir писал(а): ↑2018.02.20, 15:38
тогда как там мог оказаться массив?
Это мой косяк. Делаю три дела сразу и забыл что к чему. Не подумал прежде чем этот бред написал. И я уже сделал , всё исправил. Вот так работает. Спасибо