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

时间:2015-05-17 03:44:27

标签: php yii yii2

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

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

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

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

$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变量来存储引用表中的字段而不改变原始模型?如果那不可能,那么有没有比我已经做过的更正确的做事方式?

谢谢!

2 个答案:

答案 0 :(得分:1)

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

$model->table->age

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

答案 1 :(得分:1)

在这样的东西模型中定义关系

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

然后您可以通过引用的对象(如

)访问它
$model->table->age