Yii2中的ModelSearch查询错误

弗朗西斯

我有两个桌子projectworkload我想在添加到Workload的某个项目中显示用户,并在该项目中显示另一个成员(我称为该项目的团队成员)。

我的想法是加入2个表project,并workloaduser_id条件采取的用户项目user_id,然后从将与参加workload表再次从用户项目采取数据有USER_ID和团队成员的USER_ID将拥有项目。

那我的代码在 WorkloadSearch.php

public function searchWorkloadofUser($params) {
    $user_id = Yii::$app->user->id;
    $query = Workload::find()
        ->select(['workload.project_id', 'workload.commit_time', 'project.project_name', 'workload.from_date', 'workload.to_date', 'workload.workload_type', 'workload.comment'])
        ->join('INNER JOIN', 'project', 'workload.project_id=project.id')
        ->where('workload.user_id = '.$user_id)->orderBy('project.project_name ASC')->distinct();
    $query->join('INNER JOIN','workload', 'project.id = workload.project_id')->distinct();
}

我不明白为什么会出现错误:

SQLSTATE[42000]: Syntax error or access violation: 1066 Not unique table/alias: 'workload'
The SQL being executed was: SELECT COUNT(*) FROM (SELECT DISTINCT `workload`.`project_id`, `workload`.`commit_time`, `project`.`project_name`, `workload`.`from_date`, `workload`.`to_date`, `workload`.`workload_type`, `workload`.`comment` FROM `workload` INNER JOIN `project` ON workload.project_id=project.id INNER JOIN `workload` ON project.id = workload.project_id WHERE workload.user_id = 20) `c`
北海贝尔

就像其他人说的那样:您需要一个别名。您的错误消息告诉您:

SQLSTATE[42000]: Syntax error or access violation: 1066 Not unique table/alias: 'workload'

这是东阳你加入你的表worload到您的workload表:

$query = Workload::find() //your `workload` table
    ->select([
        ....
    ])
    ->join('INNER JOIN', 'project p'], 'workload.project_id=p.id')
    ->where('workload.user_id = '.$user_id)
    ->orderBy('p.project_name ASC')
    ->distinct();

$query->join('INNER JOIN','workload', 'project.id = workload.project_id') //join the `workload` table to the `workload` table
    ->distinct();

当您想将表联接到自身时,您必须至少为联接表定义一个别名。

我建议您引用这里的Yii2指南中描述的表名和列不要连接字符串,而是像此处此处所述绑定参数此代码应为您工作(未经测试):

$query = Workload::find() //your `workload` table
    ->select([
        '{{workload}}.[[project_id]]', //quoting tablenames and columns
        '{{%workload}}.[[commit_time]]', //add '%' when you're using table prefix
        ...
    ])
    ->join('INNER JOIN', 'project p'], 'workload.project_id=p.id')
    ->where('workload.user_id' = :user_id, [':user_id' => $user_id]) //You should bind params when use string format
    //or use hash format
    //->where(['workload.user_id' => $user_id])
    ...

$query->join('INNER JOIN','workload w2', 'project.id = w2.project_id') //Use the alias `w2` to  join the `workload` table to the `workload` table
    ->distinct();

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Yii2 REST查询

来自分类Dev

关系和Yii2中的主动查询?

来自分类Dev

PHP Yii2中的PostgreSQL json选择查询替换

来自分类Dev

在Yii2中执行原始SQL查询?

来自分类Dev

Active Record中的Yii2子查询

来自分类Dev

yii2中没有显示错误消息

来自分类Dev

从查询转换为Yii2的ModelSearch

来自分类Dev

yii2中的kartik fileinput错误

来自分类Dev

yii2中区分大小写的查询

来自分类Dev

Yii2中的SQL查询帮助

来自分类Dev

Yii2查询都在联接中获得价值

来自分类Dev

Yii2 Translations在错误的文件夹中查找

来自分类Dev

在yii2中获取日期时间时时间错误

来自分类Dev

在查询中从DateTime中选择日期-Yii2

来自分类Dev

如何在yii2中编写SQL查询

来自分类Dev

关系和Yii2中的主动查询?

来自分类Dev

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

来自分类Dev

Yii2中的查询日期字段

来自分类Dev

yii2:致命错误$ this

来自分类Dev

Yii2查询错误

来自分类Dev

Yii2中的查询错误-HY093

来自分类Dev

yii2中的kartik fileinput错误

来自分类Dev

PostgreSQL查询在Yii2中不起作用

来自分类Dev

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

来自分类Dev

在 yii2 中对齐验证错误消息

来自分类Dev

yii2 中的会话错误

来自分类Dev

ModelSearch 中的 INNER JOIN YII2

来自分类Dev

yii2,跳过查询中的空字段

来自分类Dev

在 yii2 中运行原始 SQL 时获取 SQL 查询语法错误或访问冲突