我有多对多关系,所以我有三个表(管理员,办公室和中间表):>
我需要对这三个表进行非常简单的内部联接,以显示带有Active Record的姓氏及其办公室。我尝试过,但不能。
这是我尝试过的:
$admins = Admins::find()
->joinWith(Oficinas::tableName())
->all();
echo '<pre>';
print_r($admins);
echo '</pre>';
die();
我还想知道如何显示SQL查询,以便它可以帮助我找到解决方案。
答案 0 :(得分:1)
您需要为joinWith()
指定关系名称,而不是表名称。由于没有关于关系名称的任何信息,我将根据您的要求使用简单的innerJoin
表名来显示管理员的姓氏和办公室名称。
Admins::find()
->alias('a')
->select('a.lastnameadm, o.nombreofi')
->innerJoin('admin_oficinas ao','ao.idadm = a.idadm')
->innerJoin('oficinas o','o.idofi = ao.idofi')
->all();
答案 1 :(得分:0)
#include <stdlib.h>
int main() {
exit(2);
}
,但如果您也可以像以下示例一样使用Via:
TABLE_NAME_1::find()
->join('inner join',
'table_name_2',
'table_name_2.column = table_name_1.column'
);
->join('inner join',
'table_name_3',
'table_name_3.column = table_name_2.column'
)->all();
被排除时,应像前面的示例一样获得结果。因此,无需重复关系。完整的文档可以在这里看到: https://www.yiiframework.com/doc/guide/2.0/en/db-active-record