显示具有2个相关表记录的用户

时间:2017-01-25 19:03:13

标签: laravel angular eloquent laravel-5.3 laravel-eloquent

我有3个型号:

用户,角色和分支。

他们是这样的:

倾倒用户模型:

class User extends Model
{
    // Define fields to be fillable
    protected $fillable = [
                            'firstname', 
                            'lastname',
                            'telephone',
                            'address',
                            'password',
                            'code',
                            'status',
                            'branches_id',
                            'roles_id'
                        ];

    /**
     * Get the role record associated with the user.
     */
    public function role()
    {
        return $this->hasOne('App\Role');
    }

    /**
     * Get the branch record associated with the user.
     */
    public function branch()
    {
        return $this->hasOne('App\Branch');
    }
}

对于角色模型:

class Role extends Model
{
    // Define fields to be fillable
    protected $fillable = ['description'];

    /**
     * Get the user that owns the role.
     */
    public function user()
    {
        return $this->belongsToMany('App\User');
    }
}

对于分支模型:

class Branch extends Model
{
    // Define fields to be fillable
    protected $fillable = ['description', 'location'];

    /**
     * Get the user that owns the branch.
     */
    public function user()
    {
        return $this->belongsToMany('App\User');
    }
}

我知道如果我使用Blade,列出用户的角色,我可以做类似的事情:$ user-> role()

但我正在尝试使用角度2作为前端,并使用laravel 5.3作为我的后端。

我的问题是如何检索用户以及角色和分支

这是我在UserController中的索引操作:

public function index()
{
    // Get all users, along with roles and branches
    $users = User::all();

    // Send the response
    return response()->json([
            'users' => $users
        ], 200);
}

2 个答案:

答案 0 :(得分:0)

您可以使用with()方法,例如

$users = User::with('role')->get();

有关详细信息,请参阅https://laravel.com/docs/5.4/eloquent-relationships#eager-loading

答案 1 :(得分:0)

使用eager loading

$users = User::with('role', 'branch')->get();

此外,如果用户有一个角色和一个分支,则关系应为belongsTo()而不是belongsToMany()

return $this->belongsTo('App\User');