mercredi 23 août 2017

Laravel many-to-many relationship OrderBy

I have 2 models in a Many to Many relationship. Let's say User and Role. I want to sort my users based on the ASC/DESC of a field in Role.

My User & Role classes:

class User extends Model
{
    public function roles()
{
    return $this->belongsToMany('App\Role','role_user');

}

class Role extends Model
{
    public function users()
{
    return $this->belongsToMany('App\User','role_user');

}

I can sort the roles in each user but I cant sort the users

    $query = User::with(array('roles'=> function ($query)
    { 
       $query->select('role_name')->orderBy('role_name','asc'); 
    }))->get();

I have also tried:

 $query = User::with(roles)->orderBy('role_name','asc')->get();

But the error says column role_name does not exist.

Ideal result should look like this:

[
  {
    user_id:6
    roles: [
    "Admin",
    "Baby"
    ]
  },
  {
    user_id:2
    roles: [
    "Baby"
    ]
  },
  {
    user_id:11
    roles: [
    "Baby",
    "Cowboy"
    ]
  }
]

I'd appreciate any help.



from Newest questions tagged laravel-5 - Stack Overflow http://ift.tt/2vpGel6
via IFTTT

Aucun commentaire:

Enregistrer un commentaire