2016-08-03 44 views
0

我有2個數據庫表:如何通過yii2中的參數從數據庫中獲取數據?

用戶

id | name

消息

id | sender_id | receiver_id

如何通過sender_idreceiver_id生成自定義視圖並獲取數據?我的意思是當用戶登錄時,他會看到他的收件箱和發件箱消息。請解釋這一點的邏輯。如果你會提供代碼示例,我也會很高興,因爲我是php和yii2中的新手。如果有什麼是不可理解的,我會更具體地解釋。

回答

0

你真的很缺乏細節,但我認爲你希望通過將當前用戶ID(登錄用戶)與receiver_idsender_id匹配顯示傳入消息和發送消息,並在gridview中顯示它們。

方式可能是:

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, 
    ]); 
} 

這是假設你很少有機會獲得登錄用戶,否則你需要捕捉的情況下Yii::$app->usernull

+0

嗨,非常感謝您的回答。你說得對。我可以使用gii生成包含發送和接收消息的網格的自定義視圖,還是應該手動編寫它?謝謝。 –

+0

我使用CRUD生成器來創建自定義視圖並添加它們的標籤:['label'=>'傳入的字母','url'=> ['incoming/index']], ['label'=>'Sent letters ','url'=> ['sent/index']], 但是當我點擊標籤時,它說'未找到頁面404'。傳入和發送的文件夾位於後端/視圖中。你能建議一些事嗎?謝謝。 –

相關問題