2016-08-03 9 views
0

私が持っている2データベース・テーブル:yii2のパラメータでデータベースからデータを取得する方法は?

ユーザー

idを| name

メッセージ

id | | receiver_id

カスタムビューを生成してデータを取得するには、sender_idreceiver_idでどうすればよいですか?ユーザーがログインすると、受信トレイと送信トレイのメッセージが表示されます。これの論理を説明してください。私はphpとyii2の初心者であるため、コード例を提供すると嬉しいです。何かが理解できない場合、私はより具体的に説明します。

答えて

0

あなたは本当に短いですが、現在のユーザーID(ログインしているユーザー)をreceiver_idsender_idと照合して、受信メッセージと送信メッセージの両方を表示し、それらをグリッドビューに表示すると仮定します。

アプローチは次のようになります。これは、あなたがそうでなければ、あなたがYii::$app->usernullある場合をキャッチする必要がログインしているユーザーへのアクセスを制限されていることを想定してい

public function actionIndex() 
{ 
    $user = Yii::$app->user->identity; 

    $searchModel = new MesssageSearch(); 
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams); 

    // filter on ownership of either sender or receiver 
    $dataProvider 
     ->query 
     ->andWhere(['receiver_id' => $user->id]) 
     ->orWhere(['sender_id' => $user->id]); 

    $dataProvider->setSort([ 
     'defaultOrder' => ['created_at' => SORT_DESC], 
    ]); 

    return $this->render('index', [ 
     'searchModel' => $searchModel, 
     'dataProvider' => $dataProvider, 
    ]); 
} 

+0

こんにちは、ありがとうございます。あなたは私を正しくした。 giiで送受信されたメッセージを含むグリッドを持つカスタムビューを生成することはできますか。手動で作成する必要はありますか?ありがとう。 –

+0

CRUDジェネレータを使用してカスタムビューを作成し、そのラベルを追加しました:['label' => '着信文字'、 'url' => ['着信/インデックス']]、 ['label' => '、' url '=> [' sent/index ']]、 ラベルをクリックすると'ページが見つかりません404 'と表示されます。着信して送信されるフォルダはバックエンド/ビューにあります。何か助言してもらえますか?ありがとう。 –

関連する問題