I have an issue for sorting results by polymorphic relation in Laravel . Suppose we have two table like this :
users table :
- integer id
- string name
meta table :
- integer id
- string key
- string value
- string owner_type
- integer owner_id
Relation between users table and meta table is polymorphic relation. So we have some users that each of them has some meta This is a hypothetical example of database records ( with meta )
id 1
name "user1"
meta :
id 3
key "test"
value "3"
owner_type "App\\User"
owner_id 1
id 2
key "some other key"
value "some other value"
owner_type "App\\User"
owner_id 1
id 2
name "user2"
meta :
id 3
key "test"
value "2"
owner_type "App\\User"
owner_id 2
Now I want sort users results by meta value column where key is test . something like this :
$results = User::with(['meta' => function($q){
$q->where('key' , 'test');
}])->orderBy('meta.value')->get();
But of course the code above does not work
What's your solution ? If we want get users from database and sort results by value of a meta witch has a special key what we should do ?
note : I want sort the data before getting results