Yii2显示相关数据不在数组中,不使用Listview或Gridview

时间:2016-12-23 12:42:24

标签: yii2 yii2-advanced-app

我有一个名为Dashboard.php的主视图,我想在其中显示已登录员工的手机(来自employee_phone表,其中存储了所有员工的电话号码,并通过' phone_type&#39进行区分;(即cell,home,main))在标记为' phone 1的任意字段中:'在视图上,然后显示他们的家庭'或者' main'号码为'电话2:'。请注意,为清楚起见,我遗漏了家庭'电话提供商,因为我确定如果有人可以帮助提供电话,我可以解决这个问题。手机类型。我无法显示任何电话号码,我尝试了多种配置。任何帮助表示赞赏,我提前为我的新意而道歉。我已经阅读了这个页面:http://www.yiiframework.com/doc-2.0/guide-db-active-record.html#querying-data它似乎符合我的标准,但我无法让它发挥作用。我也在这里阅读了相关问题,但它们似乎与处理数组中的数据并在ListView或Gridview中显示有关。我似乎也无法让提供者能够使用employeeCellPhone的魔术方法访问方法getEmployeeCellPhone()。

我有两张桌子:

员工表:
id
USER_ID

employee_phone表:
ID
employee_id
phone_number
PHONE_TYPE

Employee.php模型:

public function getEmployeePhones()
{
    return $this->hasMany(\frontend\models\EmployeePhone::className(), ['employee_id' => 'id']);
}

public function getEmployeeCellPhone()
{
    return $this->hasOne(\frontend\models\EmployeePhone::className(), ['employee_id' => 'id'])
        ->where(['=', 'phone_type', 'Cell'])
        ->all();
}

EmployeeController:

public function actionDashboard($id)
{
    $model = $this->findModel($id);

    $providerCellPhone = $model->employeeCellPhone;
    return $this->render('dashboard', [
        'model' => $this->findModel($id),
        'providerCellPhone' => $providerCellPhone,
    ]);
}

Dashboard.php查看:

<div class="col-lg-3">
            Phone 1: <?= $model->$providerCellPhone ?><br>
            Phone 2: <?= $model->$providerHomePhone ?>

        </div>

1 个答案:

答案 0 :(得分:1)

请尝试以下方法检查您的问题是否已解决 -

//EmployeeController
public function actionDashboard($id)
{
    $model = $this->findModel($id);

    return $this->render('dashboard', [
        'model' => $model,
    ]);
}

视图文件 -

//Dashboard.php View
<div class="col-lg-3">
    Phone 1: <?= $model->employeeCellPhone[0]->phone_number  ?><br>
    Phone 2: <?= $model->employeeHomePhone[0]->phone_number  ?>
</div>

要正确输出值$model->employeeCellPhone[0]是必需的,因为在getEmployeeCellPhone()函数中,您已使用->all()函数。编写仪表板代码假设在DB中,每个用户每个phone_type只存在一个电话号码。如果不是这种情况,则需要在视图中循环$model->employeeCellPhone并获得所需的输出。

此外,您上面粘贴的模型代码不会显示getEmployeeHomePhone()函数,我假设您已将其存在。