yii 进行关联查询,只想查询关联表的某个字段,现在是这样写的
查询结果,查询多条数据,关联表上传用户字段无法显示
单条数据关联表上传用户就可以进行显示
现在用with进行的关联,hasOne不进行字段select的查询,关联字段的结果上传用户可以进行查询出来,加上select字段限制就出问题,有人碰见过这种情况吗?请多多指教
yii 进行关联查询,只想查询关联表的某个字段,现在是这样写的
查询结果,查询多条数据,关联表上传用户字段无法显示
单条数据关联表上传用户就可以进行显示
现在用with进行的关联,hasOne不进行字段select的查询,关联字段的结果上传用户可以进行查询出来,加上select字段限制就出问题,有人碰见过这种情况吗?请多多指教
首答。最近在看yii2,我的看法,不知道对不对。
1、首先,hasOne()
是 yii\db\ActiveRecord
的一个方法,而 select()
是 yii\db\Query
的一个方法。而其实,hasOne
最后返回的是 yii\db\ActiveQueryInterface
,所以还是可以调用select()
。
2、一个 AR 类关联一张数据表,每个 AR 对象对应表中的一行, AR对象的属性对应数据行的列。
3、所以你的 model 层只需要这么写:
public function getAuthor()
{
return $this->hasOne(Admin::className(), ['id' => 'created_by']);
}
然后你的 view 页面就可以把 name 当做这个返回值(对象)的一个属性。
['attribute' => 'authorName',
'label' => '上传用户',
'value' => 'author.username'],
4、 如果你一定要查询关联表的的指定字段,问题应该在这里:
摘自yii2的类手册。所以需要在select()
里加入关联字段:
return $this->hasOne(Adminuser::className(), ['id' => 'created_by'])->select(['id','username']);
5 回答3.2k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
5 回答1.4k 阅读
with 关联的时候采用匿名函数查询
$query = self::find()