如何在 Laravel 5 中通过预加载仅检索一条记录?

cod*_*ire 1 laravel eloquent laravel-5

我有具有关系语言的雄辩模型用户

class User extends Model {

  // ... some code 

  public function languages()
  {
     return $this->belongsToMany(Language::class);
  }
}
Run Code Online (Sandbox Code Playgroud)

我的多对多关系的迁移数据透视表

public function up()
{
    Schema::create('language_user', function (Blueprint $table) {
        $table->unsignedInteger('user_id');
        $table->unsignedInteger('language_id');
        $table->primary(['user_id', 'language_id']);
    });
}
Run Code Online (Sandbox Code Playgroud)

在控制器中我尝试获取我的用户

class UserController extends Controller
{
     public function show(User $user)
     {
        return response()->success($user->with('languages')->get());
     }
}
Run Code Online (Sandbox Code Playgroud)

但不幸的是,我得到的不是一个用户,而是用户的结果数组, 我如何才能只查询一个用户的语言记录?

Rem*_*mul 5

使用 Laravel延迟预加载

来自文档

有时,您可能需要在检索父模型后立即加载关系。

在你的情况下:

class UserController extends Controller
{
     public function show(User $user)
     {
        return response()->success($user->load('languages'));
     }
}
Run Code Online (Sandbox Code Playgroud)