代码之家  ›  专栏  ›  技术社区  ›  Sandeep Sudhakaran

Laravel关系-多表联接-4个表

  •  0
  • Sandeep Sudhakaran  · 技术社区  · 7 年前

    表A
    身份证件 ---- ByID ------ CyID

    1------1------1

    2-------2-------2

    表B

    身份证件 --- 名称 ------------ DYID

    1——商品1——1

    2——商品2——2

    表C

    身份证件 —— 原因

    1——理性1

    2——理性2

    表D
    身份证件 —— 市场
    1市场1

    2市场2

    我想要这样的结果。

    [{
    id=>1,
    B_ID =>1,
    B_name=>merchant1,
    D_ID=>1,
    market=>market1,
    C_id=>1,
    reason=>reason1},{
    id=>2,
    B_ID =>2,
    B_name=>merchant2,
    D_ID=>2,
    market=>market2,
    C_id=>2,
    reason=>reason2}]
    

    我是从直接询问中得到这个答案的。 我想知道有没有可能使用Laravel关系和模型? 如果是,你能告诉我怎么做吗?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Borisu    7 年前

    是的,您可以查询模型A并预先加载其余模型:

    $modelA->with(['modelB.modelD', 'modelC'])->get();
    

    要使其工作,您需要在模型A上为模型B和模型C建立关系,在模型B上为模型D建立关系。

    更新

    您可以映射结果,例如:

    $modelACollection->map(function($modelA) {
        return [ "id" => $modelA->id,
                 "B_ID" => $modelA->modelB->id,
                 "B_name => $modelA->modelB->name,
                 "D_id" => $modelA->modelB->modelD->id,
                 "market" => $modelA->modelB->modelD->market,
                 "C_id" => $modelA->modelC->id,
                 "reason" => $modelA->modelC->reason
        ]