2016-08-03 2 views
0

내가 가지고있는이 데이터베이스 테이블 :yii2의 매개 변수로 데이터베이스에서 데이터를 가져 오는 방법은 무엇입니까?

사용자

id을 | name,

메시지

id | sender_id | receiver_id.

사용자 정의보기를 생성하고 데이터를 가져 오는 방법은 sender_idreceiver_id입니까? 사용자 로그인시받은 편지함 및 보낼 편지함 메시지가 표시됩니다. 이 논리를 설명하십시오. 나는 PHP와 yii2에서 초보자이기 때문에 코드 예제를 제공한다면 기쁠 것이다. 이해할 수없는 것이 있다면 좀 더 구체적으로 설명 할 것입니다.

답변

0

세부 사항은 매우 짧지 만 현재 사용자 ID (로그인 한 사용자)를 receiver_idsender_id과 대조하여 수신 및 발신 메시지를 모두 표시하고이를 gridview에 표시한다고 가정합니다.

접근 방법이 될 수있다 : 이것은 당신이 그렇지 않으면 당신은 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 페이지를 찾을 수 없습니다. '라는 메시지가 나타납니다. 수신 및 전송 된 폴더는 백엔드/뷰에 있습니다. 조언 좀 해줄 수 있니? 감사. –

관련 문제