我有一个表格,其中包含来自不同来源的不同类型的文本数据,由type,lang,sourceId标识并存储在字段text
中。无论如何通过活动记录关系而不是表格的对象返回,但只有字段text
的值通过关系在标量查询中?
示例:现在我有:
$modelName->RelationName->text) //field name storing expexted data, returns string.
理想的方式是:
$modelName->RelationName//text field value returned only.
答案 0 :(得分:1)
是但是使用lazy loading
方法:
将您的关系更新为
public function getRelationName(){
//Related model Class Name
//related column name as select
return $this->hasOne(RelationClass::className() ,['id' => 'id'])->select('name')->scalar();
}
然后获得关系值: -
$modelName->relationName//text field value returned only.
答案 1 :(得分:1)
使用一个或多个getter扩展您的模型,以便使用关系例如:
来重新获得所需的值在模型中,您需要检索相关数据,您可以构建一个函数来定义raltion(在本例中为hasOne)
*/
public function getRelationName()
{
return $this->hasOne(ModelOfTheRelation::className(), ['column1' => 'column1', 'EvColumn2' => 'Evcolumn2']);
}
然后你可以使用数据的getter函数
/* Getter f */
public function getRelatioName_field()
{
return $this->relationName->field;
}
在视图中,您可以使用
轻松获取数据echo $model->relationName_field
or in gridview (dataprovider)
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'relationName_field',
此链接可能很有用http://www.yiiframework.com/wiki/621/filter-sort-by-calculated-related-fields-in-gridview-yii-2-0/
答案 2 :(得分:0)
// in your model
public function getRelationName()
{
return $this->find()->select('name')->scalar();
}
// in your view
<?= $model->relationName ?>