如何在phalcon模型中使用选择列与关系。

问题描述 投票:0回答:3

我的模型名为 UserUserPhoto在一个用户中,它与许多用户的照片有关。

$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 是未定义的。

有什么办法可以在查找查询中提到列和关系?

phalcon phalcon-orm
3个回答
0
投票

的默认行为,你不能。这就是为什么。

// Specifying columns
$userData = User::find(array("columns"=>"id,username"));
var_dump(get_class($userData[0])); // "Phalcon\Mvc\Model\Row"

// Selecting whole objects
$userData = User::find();
var_dump(get_class($userData[0])); // "Users"

正如你在上面看到的那样,指定列不会返回Model实例,而是返回Row实例,而Row实例没有你自己看到的methodsrelations。

有一种方法可以实现它,但需要额外的努力,我不确定这是否值得。你可以阅读更多 本论坛主题 并按照提供的链接。


0
投票

据我所知,这是不可能的.关系有所有的列。为什么不呢?

或者像这样。

$userData = User::query()
->columns(["User.id", "User.username"])
->innerJoin("UserPhoto")
->execute();

0
投票

你可以在foreach中取消设置你不想使用的列。

© www.soinside.com 2019 - 2024. All rights reserved.