Laravel关联查询时,如何让字段自带表前缀?

例子中的关联查询,别管用不用得到关联users表,我都得在所有字段面前加上orders.,请问有没有什么办法能省去orders.

$query = Order:query()

//根据支付状态查询
if ($request->is_pay) {
    $query->where('orders.is_pay', $request->is_pay);
}

//根据用户手机号查询
if ($request->user_mobile) {
    $query->leftJoin('users', 'users.id', '=', 'orders.user_id')
        ->where('users.mobile', $request->user_mobile);
}
让PHP再次伟大
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 21

必须要这么干的,不然sql语义不明确,表名太长的话,你可以起别名

1年前 评论
勇敢的心 (楼主) 1年前
忆往昔弹指间 (作者) 1年前
忆往昔弹指间 (作者) 1年前
勇敢的心 (楼主) 1年前

个人建议用模型关联,不用写那么多if。少用这些Join

1年前 评论
南街古巷 (作者) 1年前
勇敢的心 (楼主) 1年前
勇敢的心 (楼主) 1年前
南街古巷 (作者) 1年前
勇敢的心 (楼主) 1年前
勇敢的心 (楼主) 1年前
Tomo11111

用 ORM 好一些

1年前 评论
陈先生

冒昧问一下,这个问题解答了你还会删除问题么?

1年前 评论
勇敢的心 (楼主) 1年前
陈先生 (作者) 1年前
sanders

建议使用模型关系

// 定义模型关系
public function user ()
{
    return $this->hasOne(User::class);
}
$query = Order:query()

//根据支付状态查询
$query->when($request->is_pay, fn($q) => $q->where('is_pay', $request->is_pay));
//根据支付状态查询
$query->when($request->user_mobile, fn($q) => $q->whereHas('user', fn($r) => $r->where('mobile', $request->user_mobile)));
1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!