Я пытаюсь работать с моим ProfilesController, чтобы он возвращал все необходимые мне данные для этого, чтобы я мог передать его моему представлению после его возврата из моей базы данных. При этом метод show в моем контроллере возвращает данные из моей модели User, а затем eagar загружает данные из профиля, я хочу, чтобы он добавлял вложенный массив социальных связей внутри массива профилей.Eagar Загрузка вложенного объекта внутри объекта пользователя
<?php namespace App\Http\Controllers;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\User;
use Illuminate\Http\Request;
class ProfilesController extends Controller {
/**
* Display the specified resource.
*
* @param int $id
* @return Response
*/
public function show($username)
{
$user = User::with('profile')->whereUsername($username)->firstOrFail();
return $user;
return view('profile', compact('user'));
}
}
<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class UserProfile extends Model {
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'user_profiles';
/**
* Assigns the relationship between a user proifle and their social links.
*
* @return mixed
*/
public function social_links()
{
return $this->hasOne('App\UserProfileSocialLinks');
}
}
Это объект JSON, который возвращает ток.
{
id: 1,
created_at: "2015-03-28 21:25:19",
updated_at: "2015-03-28 21:25:19",
deleted_at: null,
profile: {
id: 1,
user_id: 1,
bio: "This is just my personal biography!",
created_at: "2015-03-28 21:25:34",
updated_at: "2015-03-28 21:25:34",
deleted_at: null
}
}
Я хочу, чтобы объект JSON, чтобы выглядеть как, например:
{
id: 1,
created_at: "2015-03-28 21:25:19",
updated_at: "2015-03-28 21:25:19",
deleted_at: null,
profile: {
id: 1,
user_id: 1,
bio: "This is just my personal biography!",
created_at: "2015-03-28 21:25:34",
updated_at: "2015-03-28 21:25:34",
deleted_at: null,
social_links {
...
}
}
}
Я не уверен, что понимаю, как это будет выполнено. – user3732216
Соединения - это то, что вам нужно, задокументировано в [Laravel] (http://laravel.com/docs/5.0/queries#joins), но (другое) ответ с User :: with ('profile.social_links') - возможно, проще. –