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);
}
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 21

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

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

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

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

用 ORM 好一些

2年前 评论

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

2年前 评论
勇敢的心 (楼主) 2年前
陈先生 (作者) 2年前
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)));
2年前 评论