[英]Laravel get All with Relationships and Paginate relationship data
[英]Laravel get all with relationships
我几天前开始使用laravel。 我在其他框架上有很多经验,但是我对雄辩的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
关系的名称,则可以userDynamic
关系添加一个别名:
public function stats()
{
return $this->userDynamic();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.