【问题标题】:Yii2 : Model returning NULL value (not set) when using Widget Detail VIewYii2:使用 Widget Detail VIew 时模型返回 NULL 值(未设置)
【发布时间】:2015-07-02 04:34:15
【问题描述】:

我想问你关于使用DetailView Widget。我想显示连接表中的数据,所以我修改了函数findModel($id),如下所示:

protected function findModel($id)
{
    if (($model = TPQ::findOne($id)) !== null) {
        $data = $model::findBySql("SELECT * FROM tpq, kurikulum, pengurus where tpq.kurikulum_id = kurikulum.kurikulum_id and tpq.pengurus_id = pengurus.pengurus_id and tpq_id = $id")->all();
        return $data;
    } else {
        throw new NotFoundHttpException('The requested page does not exist.');
    }
}

我在View中使用函数

   public function actionView($id)
    {
        return $this->render('view', [
            'model' => $this->findModel($id),
        ]);
    }

我的观点:

<?= DetailView::widget([
    'model' => $model,
    'attributes' => [
        'TPQ_ID',
        'TPQ_NAMA',
        'TPQ_ALAMAT',
        'TPQ_KOORDINAT',
        'TPQ_BERDIRI',
        'TPQ_AKTIF',
        'KURIKULUM_NAMA',
        'KURIKULUM_DETAIL:ntext',
        'KURIKULUM_AKTIF',
        'PENGURUS_NAMA',
        'PENGURUS_ALAMAT',
        'PENGURUS_NOHP',
    ],
]) ?>

TPQ 表中的字段:'TPQ_ID', 'KURIKULUM_ID', 'PENGURUS_ID', 'TPQ_NAMA', 'TPQ_ALAMAT', 'TPQ_KOORDINAT', 'TPQ_BERDIRI', 'TPQ_AKTIF'

Pengurus 表中的字段:'PENGURUS_ID','USER_ID','PENGURUS_NAMA','PENGURUS_ALAMAT','PENGURUS_NOHP'

Kurikulum 表中的字段:'KURIKULUM_ID', 'KURIKULUM_NAMA', 'KURIKULUM_DETAIL', 'KURIKULUM_AKTIF'

没有错误,但显示“未设置”值。我该如何解决?

【问题讨论】:

    标签: mysql yii2 detailview


    【解决方案1】:

    您的代码存在一些问题。

    1) 使用英语命名,因为它是国际语言。想想其他可能支持此代码但根本不懂这种语言的开发人员。

    2) 最好将findBySql() 替换为ActiveQuery 方法。如果您不使用它的功能,为什么需要ActiveRecord?我在您的查询中没有看到任何复杂的逻辑,甚至可以使用ActiveQuery 构建复杂的逻辑。

    3) 对于多个表,您需要指定关系或显示多个DetailView 小部件。此小部件旨在与一个模型一起使用。

    4) 要显示关系,您可以使用点符号或 getter。

    点符号示例:

    'relation.attributeName',
    

    getter 示例:

    [
        'attribute' => 'attributeName',
        'value' => $model->relation->attributeName,
    ],
    

    阅读官方文档了解更多详情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-02
      • 1970-01-01
      • 1970-01-01
      • 2018-04-27
      • 2022-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多