【问题标题】:Laravel query to join different tables based on a conditionLaravel 查询根据条件连接不同的表
【发布时间】:2023-01-10 17:14:03
【问题描述】:

如何根据条件连接多个表。 我有 3 张桌子。

  • 交易表
  • 广告台
  • 报价请求表

交易表通过字段 is_sell 和 post_id 与广告和报价请求表相关联

如果 is_sell = 1 那么 post id是advertisement表中的id 如果 is_sell 为 0 那么 post id 是 offerrequests 表中的 id

国家列仅出现在广告和报价请求表中。 所以我需要加入表格以获得每笔交易的国家

我使用 mysql 查询得到了结果 SELECT transactions.id , IF( transactions.is_sell = '1', advertisements.country, offerrequests. country ) AS country FROM transactions LEFT JOIN advertisements ON ( advertisements.id = transactions.post_id ) LEFT JOIN offerrequests ON ( offerrequests.id = transactions.post_id );

谁能帮我得到对应的laravel查询

【问题讨论】:

  • 这将是使用多态关系的完美示例。

标签: mysql laravel join laravel-8


【解决方案1】:

您可以使用

$transactions = DB::table('transactions')
    ->select('transactions.id', DB::raw("IF(transactions.is_sell = '1', advertisements.country, offerrequests.country) as country"))
    ->leftJoin('advertisements', function ($join) {
        $join->on('advertisements.id', '=', 'transactions.post_id');
    })
    ->leftJoin('offerrequests', function ($join) {
        $join->on('offerrequests.id', '=', 'transactions.post_id');
    })
    ->get();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-12
    • 2019-02-08
    • 1970-01-01
    • 2017-12-06
    • 2019-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多