使用 gridview 进行 Yii2 查询搜索

Yii2 query search with gridview

我想进行如下查询搜索: select * 来自任务 t,activity a,项目 p 其中 t.activityid = a.activityid and a.projectid = p.projectid and p.userid = 25

我确实了解我的任务,与activity相关,那么我怎么知道创建的项目,任务与项目相关。

在我的任务视图中-

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

为此,您应该从主模型创建一个 search model 并从主模型 class 扩展搜索模型 class。

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

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

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

Displaying, Sorting and Filtering Model Relations on a GridView