我有2个数据库表:
用户
id
| name
,
消息
id
| sender_id
| receiver_id
。
如何生成自定义视图并按sender_id
和receiver_id
获取数据?我的意思是,当用户登录时,他将看到他的收件箱和发件箱消息。请解释一下这个的逻辑。如果你提供代码示例,我也会很高兴,因为我是php和yii2的新手。如果某些事情不可理解,我会更具体地解释。
答案 0 :(得分:0)
您的确非常缺乏细节,但我认为您希望通过将当前用户ID(登录用户)与receiver_id
和sender_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->user
为null
时抓住案例。