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

时间:2018-11-23 07:34:41

标签: laravel

表A
id ---- B_id ------ C_id

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

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

表B

id --- 名称 ----------- D_ID

1 ----商人1 ----- 1

2 ----商人2 ------ 2

表C

id -原因

1 ---原因1

2 ---原因2

表D
id -市场
1个市场1

2 market2

我想要这样的结果。

[{
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 个答案:

答案 0 :(得分:1)

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

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

要使其正常运行,您需要在Model A上为ModelB和modelC建立关系,并在modelB上为modelD建立关系。

更新

您可以映射结果,例如:

$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
    ]