【发布时间】:2018-09-15 05:52:36
【问题描述】:
我在 Laravel 中的查询是这样的:
$rows = \DB::table('first_table')
->select('*', 'first_table.car_id AS car_id')
->leftJoin('second_table', 'first_table.car_id', 'second_table.car_id')
->where('first_table.user_id', $user_id)
->groupBy('first_table.car_id')
->get();
上面的查询结果将是来自first_table 的所有行,second_table 行将减少为 1,因为groupBy
我有一个 foreach 循环,我想遍历 first_table 的每一行但也让 second_table 显示。但是,如果我说->groupBy('first_table.car_id'),它会将second_table 行减少到1,如果我说->groupBy('second_table.offer_id'),它将显示比预期更多的行,那么我应该设置什么查询以将first_table 的每一行显示为li在ul 列表中,并将前一个li 下的second_table 行显示为每一行的新ul 列表?
编辑
我想要这样的东西:
first_table:
car_id user_id price
7 1 60000
8 1 85000
second_table:
offer_id car_id offer_price
6 7 1000
7 7 5000
8 7 3000
foreach($rows as $row)
{
<ul>
<li>$row->price</li>
<ul>
foreach($row->offer_prices as $offer_price)
{
<li>$row->offer_price</li>
}
</ul>
</ul>
}
【问题讨论】:
-
->leftJoin('second_table', 'first_table.car_id', '=', 'second_table.car_id')缺少=比较器