【发布时间】:2016-10-08 09:40:23
【问题描述】:
我几天前开始使用 laravel。我在其他框架方面有很多经验,但我在 Eloquent ORM 和关系方面有点落后。
假设用户有另一个表来保存其统计信息。我创造了这种关系。现在用户也有很多帖子,所以我也声明了。
class User extends Authenticatable
{
public function userDynamic()
{
return $this->hasOne('App\UserDynamic', 'user_id', 'id');
}
public function posts()
{
return $this->hasMany('App\Post');
}
}
现在我们有其他型号:
class UserDynamic extends Model
{
public function user()
{
return $this->belongsTo('App\User');
}
}
还有:
class Post extends Model
{
public function user()
{
$this->belongsTo('App\User','user_id','id');
}
}
我想我已经做到了这一点。尝试检索这些时出现问题。 对于一个用户,我很好,因为我不能
$user ( get user from auth token)
$user->stats = $user->userDynamic()->first();
$user->posts = $user->posts()->paginate($this->profilePagination);
这很好,我让用户拥有一个属性统计信息,其中包含所有信息和属性帖子中的帖子。
如果我试图让所有用户像下面这样
$users = User::with('userDynamic')->active()->notPrivate();
return $users->paginate($this->followersPagination);
所有用户都这样返回
{
"id": 26,
"name": "LL",
"url": "",
"personal_quote": "",
"private": "0",
"active": "1",
"user_dynamic": {
"user_id": 26,
"following_count": 7,
"followers_count": 0,
"posts_count": 0,
"likes_count": 0
}
如何更改分配给它们的属性名称?而不是 user_dynamic 说像统计数据。
【问题讨论】:
-
只需将
userDynamic()函数重命名为您喜欢的任何名称。