如何在WHERE子句中使用多个表从一个表中取数据(Yii2)

8zzbczxx  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(142)

我试图从artist控制器执行一个查询,它的表与where子句中的另一个表(metier)没有直接关系。
如图所示,我有一个名为Artisans的表,它连接到Rel-artisan_metiers,最后一个连接到Metier,问题是我试图通过连接表来显示artisant表中的数据,而且metier.libelle ="Plombier"在哪里!
在执行查询时,会得到:
“where子句”中的列“metier.libelle”未知
有人能帮忙吗?
我的动作功能在Artisant控制器中

public function actionHoome()
{
    $plom = "Plombier";
    $rows = (new \yii\db\Query())
        ->select('art.CIN')
        ->from('artisant as art', 'metier as met', 'rel_artisan_metiers as rel_met')
        ->where(['metier.libelle' => $plom, 'metier.id_metier' => 'rel_met.id_metier'
            , 'art.CIN' => 'rel_met.Artisant_CIN'])
        ->all();
    echo json_encode($rows);
}
vxf3dgd4

vxf3dgd41#

将表指定为数组时,还可以使用数组键作为表别名(如果表不需要别名,则不要使用字符串键)。
请尝试:

$rows = (new \yii\db\Query())
        ->select('art.CIN')
        ->from(['art' => 'artisant', 'met' => 'metier', 'rel_met'=>'rel_artisan_metiers'])

相关问题