我需要Yii 2.x框架的一些帮助。
我有2个表,stuff
和table
,每个表都有自己的模型,Stuff
和Table
。
stuff
和table
共享密钥。 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
变量来存储引用表中的字段而不改变原始模型?如果那不可能,那么有没有比我已经做过的更正确的做事方式?
谢谢!
答案 0 :(得分:1)
您可以以面向对象的方式访问相关的模型字段,如下所示:
$model->table->age
在上面的表达式中,table
是Stuff
模型中的关系名称。
答案 1 :(得分:1)
在这样的东西模型中定义关系
public function getTable()
{
return $this->hasOne(Table::className(), ['id' => 'table_id']);
}
然后您可以通过引用的对象(如
)访问它$model->table->age