php - 如何将复杂的 sql 查询转换为 laravel Eloquent
问题描述
这个工作最好。但我想转换为 laravel 雄辩。任何人都可以帮助我。我不知道如何在 laravel 中使用 join。
DB::select("SELECT u.id,c.conversation_key,u.user_name,u.email
FROM conversation c, user_profile u
WHERE CASE
WHEN c.user_one = '8790'
THEN c.user_two = u.id
WHEN c.user_two = '8790'
THEN c.user_one= u.id
END
AND (
c.user_one ='8790'
OR c.user_two ='8790'
)
Order by c.conversation_key DESC Limit 20");
解决方案
转换后的 laravel Eloquen :
$userId = 8790;
$data['conversations'] = Conversation::selectRaw('user_profile.id, conversation_key, user_profile.first_name, user_profile.email')
->where(function ($q) use ($userId) {
$q->where('user_one', $userId)
->orWhere('user_two', $userId);
})
->join('user_profile', function ($join) use ($userId) {
$join->on('user_profile.id', '=', 'conversation.user_one')->where('conversation.user_one', '!=', $userId)
->orOn('user_profile.id', '=', 'conversation.user_two')->where('conversation.user_two', '!=', $userId);
})
->orderBy('conversation_key', 'DESC')
->take(20)
->get();
推荐阅读
- angular - 在Angular中按对象属性对元素进行分组
- java - 是否可以通过反射实现/覆盖抽象方法?
- python - 如何在 python 的 main() 函数中模拟一个对象?
- php - 通过按提交按钮将联系人表单数据保存在文件中似乎不起作用
- scala - 具有子类节点的 ScalaFX PickResult
- asp.net-mvc-4 - 从 IdentityServer4 注销 AspNet 客户端
- javascript - 我如何使用 css 或 javascript 在具有动态数量的图片上定位块
- ansible - 如何使用复制模块在ansible中复制
- r - 从 R 中经过训练的 randomForest 获取因子水平
- php - CSV 字段中的子数组并使用 PHP 读取