表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关系和模型吗? 如果可以,请告诉我如何?
答案 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
]