douju6651 2018-05-07 13:55
浏览 118
已采纳

通过Laravel中的多态关系对数据库结果进行排序

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

  • 写回答

1条回答 默认 最新

  • dongyan9950 2018-05-07 14:26
    关注

    What about a join?

    $results = User::join('meta', 'users.id', '=', 'meta.owner_id')
                       ->where('meta.key','=','test')
                       ->orderBy('meta.value')
                       ->select('users.id', 'users.name')
                       ->get();
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题