Как правильно отобразить информацию из базы на YII2?

Доброго времени суток
Ребят, подскажите моей тупой голове где я упускаю момент. Добавил поля в "вид", в модели прописал поля с таблицы которые нужно вывести. Но вот не задача, где я упускаю момент (повторюсь). данные не выводятся в таблицу. Вместо этого выдает "Not Set".
Пробовал убирать "Not Set" через config/web.php с помощью "форматера". "Not Set". исчезает, но данные не выводятся.
Помогите, очень нужно
bade0e6594f6459a8e661abc6c81fe36.png
Вот скриншот
Вид
<div class="risk-index">

    <h1><?= Html::encode($this->title) ?></h1>
    <?php // echo $this->render('_search', ['model' => $searchModel]); ?>

    <p>
        <?= Html::a('Create Risk', ['create'], ['class' => 'btn btn-success']) ?>
    </p>
    <?= GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],

            'name_risk',
            'status_risk',
            'name_project',
            'name_issue',
            'name_kill_risk',

            ['class' => 'yii\grid\ActionColumn'],
        ],
    ]); ?>
</div>

Модель
class risk extends \yii\db\ActiveRecord
{
    /**
     * @inheritdoc
     */
    public static function tableName()
    {
        return 'Risk';
    }

    /**
     * @inheritdoc
     */
    public $name_kill_risk;
    public $name_issue;
    public $name_project;
    public function rules()
    {
        return [
            [['name_risk', 'status_risk'], 'string', 'max' => 20],
        ];
    }

    /**
     * @inheritdoc
     */
    public function attributeLabels()
    {
        return [
            'id' => 'ID',
            'name_risk' => 'Name Risk',
            'status_risk' => 'Status Risk',
        ];
    }

    /**
     * @return \yii\db\ActiveQuery
     */
    public function getRiskRiskKills()
    {
        return $this->hasMany(RiskRiskKill::className(), ['risk_id' => 'id']);
    }

    /**
     * @return \yii\db\ActiveQuery
     */
    public function getIssueRisks()
    {
        return $this->hasMany(IssueRisk::className(), ['risk_id' => 'id']);
    }
}
  • Вопрос задан
  • 746 просмотров
Решения вопроса 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Адские вещи Вы делаете. Если у Вас hasMany, то там массив объектов, а Вы их строкой пытаетесь вывести? Мало того еще и публичные переменные на создавали зачем-то.
Если надо вывести в строку hasMany, то например так
для связи
public function getRiskRiskKills()
    {
        return $this->hasMany(RiskRiskKill::className(), ['risk_id' => 'id']);
    }

можете добавить гетер, например:
public function getSomeString()
    {
        return implode(',',ArrayHelper::getColumn($this->riskRiskKills,'someattribute')); 
    }

и в gridView
'someString'

про arrayHelper: www.yiiframework.com/doc-2.0/guide-helper-array.html
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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