Yii2:如何做一个简单的连接查询?

Rob*_*ini 3 postgresql yii2 yii2-advanced-app

我正在学习如何使用 Yii2 框架进行简单的查询。我使用 PostgreSQL。

我正在尝试连接两个表并使用where条件从两个表中获取数据。

这些表称为AdminsPersons。连接使用字段称为idadm

条件是idadm = 33。这很好用,但结果仅包含来自 Admins 表的数据,而我需要来自其他表的数据。

这是我的例子:

$query = \app\models\Admins::find()
    ->select('*')
    ->leftJoin('persons', 'persons.idadm = admins.idadm')
    ->where(['admins.idadm' => 33])
    ->with('persons')
    ->all();
Run Code Online (Sandbox Code Playgroud)

我正在遵循 Yii2 官方指南:http://www.yiiframework.com/doc-2.0/guide-db-active-record.html

更新:这里我展示了不能解决问题的更新代码: 在此输入图像描述

Yas*_*tel 5

您需要在 select() 中写入所有列名称。

$query = \app\models\Admins::find()
    ->select('admin.*,persons.*')  // make sure same column name not there in both table
    ->leftJoin('persons', 'persons.idadm = admins.idadm')
    ->where(['admins.idadm' => 33])
    ->with('persons')
    ->all();
Run Code Online (Sandbox Code Playgroud)

您还需要在管理模型中定义人员表属性。

第二种方法是将记录作为数组获取,因此您不需要在管理模型中定义属性。

$query = \app\models\Admins::find()
    ->select('admin.*,persons.*')  // make sure same column name not there in both table
    ->leftJoin('persons', 'persons.idadm = admins.idadm')
    ->where(['admins.idadm' => 33])
    ->with('persons')
    ->asArray()
    ->all();
Run Code Online (Sandbox Code Playgroud)