You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Laravel中按条件关联多表获取交易记录的国家字段

等价的Laravel查询语句

你可以用Laravel的查询构造器或者Eloquent模型实现和给定SQL等价的逻辑,以下是两种常见写法:

查询构造器写法

DB::table('transactions')
    ->leftJoin('advertisements', 'advertisements.id', '=', 'transactions.post_id')
    ->leftJoin('offerrequests', 'offerrequests.id', '=', 'transactions.post_id')
    ->selectRaw("transactions.id, IF(transactions.is_sell = '1', advertisements.country, offerrequests.country) AS country")
    ->get();

Eloquent模型写法

假设你已经创建了对应的数据模型(Transaction、Advertisement、OfferRequest),可以这样写:

Transaction::query()
    ->leftJoin('advertisements', 'advertisements.id', '=', 'transactions.post_id')
    ->leftJoin('offerrequests', 'offerrequests.id', '=', 'transactions.post_id')
    ->selectRaw("transactions.id, IF(transactions.is_sell = '1', advertisements.country, offerrequests.country) AS country")
    ->get();

补充说明

如果更倾向于拆分式写法,也可以用select配合DB::raw替代selectRaw,效果完全一致:

->select(
    'transactions.id',
    DB::raw("IF(transactions.is_sell = '1', advertisements.country, offerrequests.country) AS country")
)

内容的提问来源于stack exchange,提问作者Chippy Thomas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 11:05:21