我的模型名为User
和UserPhoto
,在一个用户中与许多用户照片相关
$this->hasMany("id", "UserPhoto", "user_id");
$this->belongsTo("user_id", "User", "id");
如果我尝试
$userData = User::find();
foreach ($userData as $user) {
$userPhotoAry = $user->UserPhoto;
}
我正在获取关系结果集,但我只需要从表中选择列。
所以我试过了,
$userData = User::find(array("columns"=>"id,username"));
foreach ($userData as $user) {
$userPhotoAry = $user->UserPhoto;
}
我得到$UserPhoto
未定义。
有没有办法在查询中提及列和关系?
答案 0 :(得分:0)
使用默认行为,您不能。原因如下:
CREATE TABLE misSpells(
misSpell VARCAHR,
correspondingOne VARCHAR
)
Examples:
magician, magician
magican, magician
DDD, DDD
D/D/D, DDD
正如您在上面指出的那样,指定列不会返回Model实例,而是返回Row实例,它们没有您自己已经看过的方法/关系。
有一种方法可以实现它,但需要一些额外的努力,我不确定它是否值得。您可以在 this forum topic 中阅读更多内容,并按照提供的链接进行操作。
答案 1 :(得分:0)
据我所知,这是不可能的。 关系有所有列。为什么不呢?
或者像这样:
$userData = User::query()
->columns(["User.id", "User.username"])
->innerJoin("UserPhoto")
->execute();
答案 2 :(得分:0)
您可以取消设置您不想在foreach中使用的列