如何在Laravel中嵌套资源

时间:2015-02-27 11:56:58

标签: laravel resources

我在routes.php文件中有这2条路线

$router->resource('user','UserController');
$router->resource('usertype','UserTypeController');

但我真正想要的是获取用户并使用它加入usertype 例 用户表: id name usertype_id 1管理员2 2约翰1

usertype表: id名称 1正常 2管理员

我想得到: 1'约翰''正常' 2'admin''admin'

我试过这个:

public function __construct(User $user)
    {

        $this->user = $user->with('usertype');

    }

这不好用。它使用user.id来设置关系 所以它将进行的查询是

select * from user_types where user_types.id = users.id

应该是

select * from user_types where user_types.id = users.user_type_id

第二个问题是它为每个用户执行查询, 在此解释:https://www.youtube.com/watch?v=swhWRMkpVsg

1 个答案:

答案 0 :(得分:0)

我找到了解决方案: 在用户控制器中:

public function __construct(User $user)
    {
        $this->user = $user->with('usertype')->with('company');
    }

并在用户模型中:

public function usertype(){

    return $this->belongsTo('App\UserType','user_type_id','id');
}

public function company(){

    return $this->belongsTo('App\Company','company_id','id');
}