/ / Laravel Красномовні зовнішні ключові відносини - php, laravel, красномовний

Ларавел еволюційний зв'язок з іноземними ключовими словами - php, laravel, красномовний

У мене питання про красномовний Laravel. Я створив декілька таблиць і моделей, приблизно так:

Подорож

  • ідентифікатор
  • ім'я
  • користувач

Користувач

  • ідентифікатор
  • електронна пошта

повідомлення

  • ідентифікатор
  • зміст
  • поїздка
  • користувач

Як я можу отримати всі повідомлення для одного користувача за допомогою всіх зовнішніх ключів? Ви знаєте, всі дані з цих таблиць. Подобається це:

[
1 => [
"content",
"trip" => [
"name"
],
"user" => [
"email"
]
]
]

Можливо, простий спосіб отримати всі дані?

Мої моделі:

// Message.php:

public function user()
{
return $this->belongsTo("AppUser");
}

public function trip()
{
return $this->belongsTo("AppTrip");
}

// Trip.php:

public function user()
{
return $this->belongsTo("AppUser");
}

// User.php:

public function trips()
{
return $this->hasMany("AppTrip");
}

public function messages()
{
return $this->hasMany("AppMessage");
}

Мій код

dd(
User::with([
"sent",
"recipient"
])->find(2)->toArray()
);

І що я хочу отримати:

екран

Відповіді:

1 для відповіді № 1

Я вважаю, ви шукаєте метод навантаження.

Скажімо, у вас є користувач

$user->load("messages"); // var_dump($user);

Якщо ви вкажете користувацький об’єкт, ви побачите, що відповідні повідомлення були завантажені.


0 для відповіді № 2

Використовуйте прагнення до завантаження.
Спробуйте це:

$users = User::with([
"messages.trip",
])->get();

dd($users);

Ref: https://laravel.com/docs/5.3/eloquent-relationships#eager-loading