Yii Framework - 将来自不同 table 的字段存储到模型中

Yii Framework - Storing field from a different table into a model

我在 Yii 2.x 框架方面需要一些帮助。

我有 2 个 table,stufftable,每个都有自己的模型,StuffTable

stufftable 共享一个密钥。 stuff 包含 table_id,它链接到 table 中的 id

stuff 控制器包含以下代码,用于检索 stuff 中的所有字段和 table 中的 age 字段:

$model = Stuff::find ()
                ->select (['`stuff`.*', '`table`.`age`'])
                ->leftJoin ('table', '`stuff`.`table_id`=`table`.`id`', [])
                ->where (['table_id' => $id])
                ->one ()

执行后,$model 包含 stuff table 中的所有内容,但不包含 age 字段,即使生成的 SQL 包含取回它。我发现将 public $age; 添加到 Stuff 模型中确实存储了 age 字段,但是这似乎是一种 hack 并且感觉很脏。

所以我的问题是,是否可以在不改变原始模型的情况下获取 $model 变量来存储引用的 table 中的字段?如果那不可能,有没有比我已经做过的更正确的做事方式?

谢谢!

您可以以面向对象的方式访问相关模型字段,如下所示:

$model->table->age

在上面的表达式中,tableStuff 模型中的关系名称。

像这样在填充模型中定义关系

public function getTable()
{
    return $this->hasOne(Table::className(), ['id' => 'table_id']);
}

然后您可以通过

之类的引用对象访问它
$model->table->age