Yii 框架 - 将不同表中的字段存储到模型中


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

我需要一些关于Yii 2.x框架的帮助。

我有 2 张桌子,stuff 张和 table 张桌子,每张都有自己的模型,StuffTable

stufftable共用一个密钥。 stuff包含链接到table中的idtable_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 表中的所有内容,但不包含age字段,即使生成的 SQL 确实检索了它。我发现将public $age;添加到Stuff模型中确实存储了age字段,但这似乎是一个黑客并且感觉很脏。

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

谢谢!

像这样定义材料模型中的关系

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

然后你可以通过引用的对象访问它,比如

$model->table->age

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

$model->table->age

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