从查询转换为Yii2的ModelSearch

弗朗西斯

我是Yii2的新手,并且有一个查询的结果正确:

SELECT DISTINCT workloadTeam.project_id, wp.project_name, workloadTeam.user_id, workloadTeam.commit_time, wp.workload_type FROM 
(SELECT p.id, p.project_name, w.user_id, w.commit_time, w.comment, w.workload_type
     FROM workload as w, project as p
     WHERE w.user_id = 23 AND p.id = w.project_id) wp
INNER JOIN workload as workloadTeam ON wp.id = workloadTeam.project_id

但是我在ModelSearch.php中写道:

$user_id = Yii::$app->user->id;

$subquery = Workload::find()->select('p.id', 'p.project_name', 'w.user_id', 'w.commit_time', 'w.comment', 'w.workload_type')
        ->from(['project as p', 'workload as w'])
        ->where(['user_id' => $user_id, 'p.id' => 'w.project_id']);

$query = Workload::find()
        ->select(['workloadTeam.project_id', 'wp.project_name', 'workloadTeam.user_id', 'workloadTeam.from_date', 'workloadTeam.to_date', 'workloadTeam.workload_type', 'workloadTeam.comment'])
        ->where(['', '', $subquery]);

$query->join('INNER JOIN', 'workload as workloadTeam', 'wp.id = workloadTeam.project_id');

发生错误:

SELECT COUNT(*) FROM `workload` INNER JOIN `workload` `workloadTeam` ON wp.id = workloadTeam.project_id WHERE `` (SELECT p.project_name `p`.`id` FROM `project` `p`, `workload` `w` WHERE (`user_id`=20) AND (`p`.`id`='w.project_id'))

而且我无法通过上面的正确查询来修复它。您对此有什么解决方案?

北海贝尔

Yii-debug工具栏中是否显示此错误?然后,您的查询(您提到的错误)可能只是之前列出的查询中的计数。

您错过了添加子查询infrom子句的操作,就像在工作的sql中显示的那样。在您的where子句中添加此错误的地方。将子查询的where条件下,如果你有标量的结果,因为你必须使用这个结果与操作数的喜欢=>=in...

这可以工作:

$user_id = Yii::$app->user->id;

$subquery = Workload::find()->select([
    'p.id as id',
    'p.project_name as project_name',
    'w.user_id as user_id',
    'w.commit_time as commit_time',
    'w.comment as comment',
    'w.workload_type as workload_type'
])
->from([
    'project as p',
    'workload as w'
])
->where([
    'user_id' => $user_id,
    'p.id' => 'w.project_id'
]);

$query = Workload::find()
    ->select([
        'workloadTeam.project_id',
        'wp.project_name',
        'workloadTeam.user_id',
        'workloadTeam.from_date',
        'workloadTeam.to_date',
        'workloadTeam.workload_type',
        'workloadTeam.comment'
    ])
    ->from([$subquery => 'wp']); //you were missing this line

$query->join('INNER JOIN', 'workload as workloadTeam', 'wp.id = workloadTeam.project_id');

但是您workload在主查询中不使用表中的任何选择$query...

由于我不知道您要实现什么目标,因此我无法在这个主题上为您提供帮助...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Yii2中的ModelSearch查询错误

来自分类Dev

ModelSearch 中的 INNER JOIN YII2

来自分类Dev

如何将“自然联接”转换为yii2 Active查询?

来自分类Dev

将CASE查询的SQL转换为Yii2 Active Record

来自分类Dev

如何将此MySQL查询转换为Yii2 ActiveQuery格式?

来自分类Dev

yii2,将现有的 unix 值转换为查询中的时间戳

来自分类Dev

(Yii2) submitButton => 将 onclick 函数转换为 siteControllers?

来自分类Dev

Yii2 REST查询

来自分类Dev

Yii2查询错误

来自分类Dev

如何将Yii1的accessRules中的“用户”转换为Yii2中的behaviors()

来自分类Dev

如何从不直接相关的表中获取数据并在带有ModelSearch()Yii2的gridview上使用它

来自分类Dev

如何在yii2中将数组转换为json

来自分类Dev

如何在Yii2中创建关联数组并将其转换为JSON?

来自分类Dev

Yii2通过左联接将SqlDataProvider转换为ActiveDataProvider

来自分类Dev

Yii2类Closure的对象无法转换为字符串

来自分类Dev

Yii2通过左联接将SqlDataProvider转换为ActiveDataProvider

来自分类Dev

Yii2如何将where子句中的级联选择转换为activequery?

来自分类Dev

将此查询转换为Yii的CDbCriteria格式

来自分类Dev

Yii2查询未正确引用

来自分类Dev

Yii2中的SQL查询帮助

来自分类Dev

Yii2中的查询日期字段

来自分类Dev

Yii2模型搜索查询

来自分类Dev

yii2 mysql 计数查询

来自分类Dev

Yii2 查询得到哪里

来自分类Dev

Yii2资产转换器

来自分类Dev

yii2:Yii \ db \在模型函数中查询

来自分类Dev

将SQL查询转换为Yii条件查询

来自分类Dev

Yii2 db getStats(数据库查询数)

来自分类Dev

YII2活动记录查询每周获取记录