2016-12-23 4 views
0

Dashboard.phpというメインビューでは、ログインしている従業員の携帯電話を表示します(従業員の電話番号をすべて格納するemployee_phoneテーブルからビューで 'phone 1:'と表示されている任意のフィールドで 'phone_type'(つまりセル、家庭、メイン)で区別され、 'home'または 'main'番号を 'phone 2:'と表示します。注意してください、私は誰かが '携帯電話'の種類を助けることができる場合、私はそれを把握できると確信しているので、わかりやすくするために、私は '家庭の電話プロバイダを残しました。電話番号を表示することができず、いくつかの設定を試しました。何か助けていただければ幸いです。私はこのページを読んだ:http://www.yiiframework.com/doc-2.0/guide-db-active-record.html#querying-dataそれは私の基準に適合しているようだが、私はそれを動作させることはできません。私もここで関連する質問を読んだことがありますが、配列内のデータを処理してListViewまたはGridviewに表示することに関連しているようです。私はまた、プロバイダがemployeeCellPhoneという魔法のメソッドでgetEmployeeCellPhone()メソッドにアクセスできるようにすることができないようです。Yii2リストビューやグリッドビューを使用していない配列に関連するデータを表示

が、私は2つのテーブルを持っている:

従業員表:
ID
のuser_id

employee_phone表:
PHONE_NUMBER
PHONE_TYPE

Employee.phpモデルをEMPLOYEE_ID

ID:

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

あなたの問題が解決されるかどうかを確認するには、次の試してみてください -

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

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

とビューをファイル -

あなたの getEmployeeCellPhone()機能では、あなたが ->all()機能を使用しているため、正しく出力値 $model->employeeCellPhone[0]
//Dashboard.php View 
<div class="col-lg-3"> 
    Phone 1: <?= $model->employeeCellPhone[0]->phone_number ?><br> 
    Phone 2: <?= $model->employeeHomePhone[0]->phone_number ?> 
</div> 

が必要です。 Dashboardのコードは、DBでは、phone_typeごとに1人のユーザに1つの電話番号しか存在しないと仮定して書かれています。そうでない場合は、ビュー内で$model->employeeCellPhoneをループして、目的の出力を取得する必要があります。

また、上に貼り付けたモデルコードには、getEmployeeHomePhone()機能が表示されていないため、そこにあると仮定しています。

+0

正しい。しかし、私の答えで述べたように、単純に 'foreach'ループを行い、出力を出力することができます – sm1979

+0

間違っている - 私は答えを更新します。私は、オブジェクトである 'employeeCellPhone [0]'を印刷しました。 'employeeCellPhone [0] - > phone_number'を印刷する必要があります。これは、エラーを取り除く必要があります – sm1979

+0

私はそれを行うとき、私はエラー 'クラスfrontend \ models \ EmployeePhoneのオブジェクトは文字列に変換できませんでした'を取得します。その他の提案はありますか? – Marko

関連する問題