У меня проблема с сортировкой результатов по полиморфным отношениям в Laravel.
Предположим, у нас есть две таблицы, подобные этой:
users table :
- integer id
- string name
meta table :
- integer id
- string key
- string value
- string owner_type
- integer owner_id
Связь между таблицей пользователей и мета таблицей является полиморфной.
Итак, у нас есть некоторые пользователи, у каждого из которых есть мета
Это гипотетический пример записей базы данных (с мета)
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
Теперь я хочу отсортировать результаты пользователей по столбцу мета-значений, где ключ - это тест.
как то так:
$results = User::with(['meta' => function($q){
$q->where('key' , 'test');
}])->orderBy('meta.value')->get();
Но, конечно, приведенный выше код не работает
Каково ваше решение?
Если мы хотим получить пользователей из базы данных и отсортировать результаты по значению, у мета-ведьмы есть специальный ключ, что нам делать?
примечание: я хочу отсортировать данные до получения результатов