【问题标题】:SQL join issue with LaravelLaravel 的 SQL 连接问题
【发布时间】:2018-03-06 04:45:17
【问题描述】:

我有 2 个表,其中第一个表包含类别的所有值,但我不想向每个客户显示所有类别,所以有一列 is_hidden 结构是

cat_id    cat_name    is_hidden
  1         cat         no
  2         cat1        no
  3         cat2        no
  4         cat3        no
  5         cat4        yes
  6         cat5        yes

现在在我的 SQL 查询中,我得到了 is_hidden 列不存在的所有值 在我的另一张表中,我正在批准一些客户显示类别 表结构为

id   cat_id    client_id
1     5          1

现在我想显示 is_hidden 为 no 的表中的所有广告系列,现在我已经批准了表 2 中的客户,因此它还应该显示来自 5 的类别 ID

现在我如何加入 SQL 以获得所需的结果。

这是我尝试过的代码。

Approvals::where('client_id',$client_id)
            ->rightJoin('tbl_cat', function ($join) {
                $join->on('tbl_cat.cat_id', '=', 'tbl_approval.approval_id');
                $join->where('tbl_cat.is_hidden','=','no');                
            });

但我没有得到第 5 类输出。

【问题讨论】:

  • @PhilippSander 你能指导我如何通过人际关系来实现它
  • @sunitiyadav 我使用相同的代码
  • @sunitiyadav 我认为 rightjoin 行不通,因为在状态我没有获得第 5 类
  • 什么是approval_id?

标签: mysql laravel join


【解决方案1】:

这不能通过加入来实现。你应该像下面这样使用联合

SELECT
    *
FROM
    table1
WHERE 
    is_hidden = 'no'
UNION ALL
    SELECT
        t.*
    FROM
        table2 t2 INNER JOIN table1 t ON t.id = t2.cat_id
    WHERE
        t2.client_id = 1

【讨论】:

  • 你能把这个查询转换成 laravel eloquent。当我将其更改为 laravel 查询时出现错误
【解决方案2】:

您的加入应该在cat_id 上,以便您获得cat_id 5 的记录。 希望对你有帮助。

Approvals::where('client_id',$client_id)
            ->rightJoin('tbl_cat', function ($join) {
                $join->on('tbl_cat.cat_id', '=', 'tbl_approval.cat_id');
                $join->where('tbl_cat.is_hidden','=','no');                
            });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多