有没有办法在laravel中查询和映射数据与它们的对应关系

时间:2016-01-28 06:44:54

标签: laravel

如何将一个表中的数据映射到其他表中的其他数据; 例如我们有三个表区域,市场,类别,在laravel 5.1中使用雄辩的产品 我试过这个,但只给了我最后一次

public function look(Request $request)
{
    ``$sector_id=$request->input('category');
 $cells=Cell::where('sector_id',"=",$sector_id)->get();

 foreach ($cells as $cell){
    $a=$cell->id;
    $markets=Market::where('cell_id',"=",$a)->get();
}
 foreach ($markets as $market){
    $b=$market->id;
    $prices=Price::where('market_id',"=",$b)->get();
}

返回视图('reports.sector') - > with('cells',$ cells) - > with('markets',$ markets)-`> with('prices',$ prices); }

我需要只显示上表中的名称,但我需要的是每个表中的一个元素映射其他表中的相应元素我该如何进行查询。我需要来自数据库的所有数据请帮助我我被困在这里。

1 个答案:

答案 0 :(得分:0)

如果你的意思是三个单独的表:

$cells = Cell::where('sector_id', $sector_id)->get();
$markets = Market::whereIn('cell_id', $cells->pluck('id'))->get();
$prices = Price::whereIn('market_id', $markets->pluck('id'))->get();

如果您希望以树状结构显示数据,并且已正确定义模型relations,则可以使用eager loading

$cells = Cell::where('sector_id', $sector_id)->with('markets.prices')->get()

cells传递给视图,您可以在刀片模板中使用以下内容来显示数据

@foreach ($cells as $cell)
  @foreach ($cell->markets as $market)
    @foreach ($market->prices as $price)