【问题标题】:Yii2 query search with gridviewYii2 使用 gridview 进行查询搜索
【发布时间】:2017-03-03 14:08:00
【问题描述】:

我想做一个查询搜索,例如: select * from task t, activity a, project p where t.activityid = a.activityid and a.projectid = p.projectid and p.userid =25

我确实了解我的任务,与活动有关,所以我怎么知道创建的项目,任务与项目有关。

在我的任务视图中-

$query1s = new Query;
$query1s->select('*')
    ->from('task','activity','project') 
    ->where(['task.activityid' => 'activity.activityid']) 
    ->andWhere(['activity.projectid' => 'project.projectid']) 
    ->andWhere(['project.userid' => $userID]);

$command = $query1s->createCommand();
$datas = $command->queryAll();

$dataProvider = new ActiveDataProvider([
    'query' => $query1s,
]);

【问题讨论】:

  • 显示你的代码你做了什么。
  • 在我的任务视图中- $query1s = new Query; $query1s->select('*') ->from('task','activity','project') ->where(['task.activityid'=>'activity.activityid']) ->andWhere([ 'activity.projectid'=>'project.projectid']) ->andWhere(['project.userid'=>$userID]); $command = $query1s->createCommand();$datas = $command->queryAll(); $dataProvider = new ActiveDataProvider([ 'query' => $query1s, ]);

标签: yii2 yii2-advanced-app


【解决方案1】:

要实现这一点,您应该从主模型创建一个search model,并从主模型类扩展搜索模型类。

之后,您应该创建一个名为search 的公共方法,并带有参数。然后你在你的方法中过滤和查询数据而不执行查询。完全创建查询后,只需将其传递给执行它的dataprovider whitout,您就可以对这些数据执行任何您需要执行的操作,并在您的控制器和视图中处理其他事情。

这里有两个网址可以帮助你完成教程:

Filter & Sort by calculated/related fields in GridView Yii 2.0

Displaying, Sorting and Filtering Model Relations on a GridView

【讨论】:

  • 我已经解决了这个问题,我忘记了我可以使用我的活动表加入另外 2 个表来获得结果,感谢你我也能够输出结果
猜你喜欢
  • 2019-01-09
  • 1970-01-01
  • 2018-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多