【发布时间】:2014-08-21 04:38:35
【问题描述】:
我的 Laravel 4.2 Web 应用程序中有两个模型,User 和 Group。一个用户可以是多个组的成员,一个组可以有多个成员。因此,这两个模型都以多对多的关系连接:
<?php
class User extends Eloquent {
public function groups()
{
return $this->belongsToMany('Group');
}
}
class Group extends Eloquent {
public function users()
{
return $this->belongsToMany('User');
}
}
?>
我的 API 资源之一是 /groups,它列出了应用程序中可用的所有组:
<?php
$groups = Group::with('users')->all();
?>
这可行,但是在 JSON 响应中,每个用户都包含 users 表中的所有字段(当然不包括 $hidden 属性中的字段)。我希望这种关系只返回一组特定的字段而不是整个表。
在其他关系类型中,我可以通过以下语句轻松实现这一点(现在假设用户可能只属于一个组):
<?php
public function users()
{
return $this->hasMany('User')->select(['id', 'first_name', 'last_name']);
}
?>
但是,以上内容似乎不适用于多对多关系。我遇到了this question,它显然是指同一个问题,看起来这在 Laravel 4.1 中是不可能的。所选答案的作者 tptcat 在 Laravel 的 Github 问题跟踪器上提供了一个问题的链接,但该链接不再有效,我无法确定这个问题在 4.2 中是否仍然存在。
有人遇到过这个问题并成功解决了吗?
【问题讨论】:
标签: php laravel relationship