Я начал использовать laravel пару дней назад. У меня большой опыт работы в других средах, но я немного расправляюсь с Eloquent ORM и отношениями.Laravel получить все с отношениями
Скажите, что у пользователя есть другой стол с его статистикой. Я создаю эти отношения. Теперь у пользователя также много сообщений, поэтому я объявляю это тоже.
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()' функцию к тому, что когда-либо вам нравится. –