php - 有没有办法将此 RAW 查询转换为 Eloquent?
问题描述
我有这行查询可以通过 localhost 在 MySQL 上运行,我想在我的 Laravel 上使用它,但我不知道如何将我的代码转换或翻译成 Eloquent。
这两个模型相互关联。这就是我用我的代码尝试过的。
状态
public function reqs(){
return $this->belongsTo('App\Reqs','reqs_id','id');
}
要求
public function statuses()
{
return $this->hasMany('App\Statuses','reqs_id','id');
}
这是我尝试过的,但它无法得到我想要的
$reqs = Statuses::with('reqs')->
where('status','=',$status)->
where('user_id','=',auth()->user()->id)->get();
另一方面,这是有效的
DB::select('SELECT * from `statuses`, `reqs`
WHERE `statuses`.`status` = ?
AND `reqs`.`id` = `statuses`.`reqs_id`
AND `reqs`.`user_id` = ?
', [$status,auth()->user()->id]);
我得到了我的预期,但我想知道是否有一种雄辩的方式。谢谢。
解决方案
您不能使用 Eloquent 从两个表中进行选择,您需要明确加入另一个表。您不需要select()
此查询的部分,但您可能应该明确说明您想要哪些字段,以便获得您期望的数据。
Status::select('statuses.*')
->join('reqs', 'reqs.id', '=', 'statuses.reqs_id')
->where('statuses.status', $status)
->where('reqs.user_id', auth()->id())
->get();
推荐阅读
- ios - view.topAnchor 和 view.safeAreaLayoutGuide.topAnchor 有什么区别?
- reactjs - 反应本机 InitialRouteName
- spring - Docker 在 Spring Boot 应用程序中优于 Gradle/Maven 的价值是什么
- linux - 使用 pgrep 获取进程 ID Linux
- nginx - 已解决 - 在 nginx 上安装 nextcloud,出现错误 500
- node.js - 读取 Firebase 数据会阻止异步方法解析
- c - 如何用新值覆盖用户输入的向量的分量?
- javascript - 我们如何能够使用字符串来执行此任务?
- php - 如何在模型类中为 db 设置静态属性
- neo4j - 如何通过neo4j-stream将节点集合发送到kafka