查询生成器原始子查询不起作用

时间:2021-06-03 11:39:22

标签: sql laravel builder

我在运行此代码时遇到问题。它说:

<块引用>

语法错误或访问冲突:1064 你的 SQL 有错误 语法。

我不知道这是否来自 subquery。这样写 subquery 是否正确?

    $result = DB::table('grievance_redress_info')
    ->select(
    'complainer_name',
    'phone',
    'complaint_date',
    'address',
    'complaintSub.name_en',
    'resolve_action_date',
    DB::raw("(SELECT grievance_history.status
    FROM grievance_history
    WHERE grievance_history.grievance_id=grievance_redress_info.id 
    ORDER BY grievance_history.id DESC LIMIT 1) AS current_status")
    )  
    ->leftJoin("common_labels AS 
    complaintSub",'grievance_redress_info.complaint_subject_id','=','complaintSub.id')
    ->get();

1 个答案:

答案 0 :(得分:1)

我认为你可以这样做

from pprint import pprint

def reformat_flat_info(flat):
    reformatted = {}
    for o in flat:
        key = o["aid"]
        del o["aid"]
        reformatted[key] = o
    return reformatted

def expand_data(aid, flat, lvl=0):
    obj = flat[aid]
    if obj is None: return {aid: obj}

    obj.update({"aid": aid})
    if lvl > 1:
        return {aid: None}

    for nid,id in enumerate(obj["data"]):
        obj["data"][nid] = expand_data(id, flat, lvl=lvl+1)

    if "nested_data" in obj:
        for nid,id in enumerate(obj["nested_data"]["data"]):
            obj["nested_data"]["data"][nid] = expand_data(id, flat, lvl=lvl+1)

    return {aid: obj}

# Provide the flat information structure
flat_info = [
    {
        "aid": "id3",
        "data": ["id1", "id2"]
    }, {
        "aid": "id1",
        "data": ["id3", "id2"]
    }, {
        "aid": "id2",
        "nested_data": {"aid": "id4", "atype": "nested", "data": ["id1", "id3"]},
        "data": []
    }
]
pprint(flat_info)
print('-'*80)

# Reformat the flat information structure
new_flat_info = reformat_flat_info(flat=flat_info)
pprint(new_flat_info)
print('-'*80)

# Generate the result
starting_id = "id3"
result = expand_data(aid=starting_id, flat=new_flat_info)
pprint(result)

您可以查看docs了解更多

我希望这有效!