laravel 5.2 中的嵌套 foreach 循环
Nested foreach loop in laravel 5.2
我有 3 table
1 个广告商
2 个广告
- id
广告商可以有多个广告
3 个实例
- id
- ad_id
- 日期
广告可以有多个日期 - 日期是实例中的列 table
$input = Input::get('fullname'); // fullname is the id of adverstiser
// input is the advertiser id
$adverts = DB::table('adverts')->where('a_id',$input)->get();
return view('adverts.index', compact( 'adverts'));
此查询将提供与广告商相关的所有广告数据。
很好。
在我的 adverts.index
@foreach($adverts as $advert)
<div class="caption">
<ul>
<li><i class="fa fa-picture-o"></i> {{$advert->height}}x{{$advert->height}}</li>
<li><i class="fa fa-file"></i> {{$advert->finfo}}</li>
<li><i class="fa fa-eye"></i> Last seen:</li>
<li><i class="fa fa-link"></i> {{$advert->domain}}</li>
<li><i class="fa fa-link"></i> <a href="{{$advert->src}}" target="_blank">Visit full ad</a></li>
</ul>
</div>
@endforeach
我想从实例中获取上次查看日期 table。
SELECT MAX(date) AS "Last seen date" FROM instances WHERE ad_id =1
ad_id 是来自广告的主键 id table
我想将此查询的值传递给他们与上面相同的视图
adverts.index
循环是否必须在视图中完成?
或者我缺少的其他内容。
我会先看看你是否能得到每个 advert
至少有一个对应 instance
的最大日期。这样的事情应该可以解决问题:
$instances = DB::table('instances')
->select(DB::raw('*, MAX(date) as last_seen_date'))
->groupBy('ad_id')
->get();
如果你能先让它工作,那么你可以将它与你的 advertiser
和 adverts
表结合起来以匹配特定的广告商并获得每个广告的剩余信息。您还可以执行 leftJoin
以确保您抓取所有 adverts
,即使是没有任何匹配项的 instances
。
我也强烈建议您 define models,这样可以更轻松地在整个应用程序中创建可重用的查询片段 ("scopes")。
我有 3 table
1 个广告商
2 个广告
- id
广告商可以有多个广告
3 个实例
- id
- ad_id
- 日期
广告可以有多个日期 - 日期是实例中的列 table
$input = Input::get('fullname'); // fullname is the id of adverstiser
// input is the advertiser id
$adverts = DB::table('adverts')->where('a_id',$input)->get();
return view('adverts.index', compact( 'adverts'));
此查询将提供与广告商相关的所有广告数据。
很好。
在我的 adverts.index
@foreach($adverts as $advert)
<div class="caption">
<ul>
<li><i class="fa fa-picture-o"></i> {{$advert->height}}x{{$advert->height}}</li>
<li><i class="fa fa-file"></i> {{$advert->finfo}}</li>
<li><i class="fa fa-eye"></i> Last seen:</li>
<li><i class="fa fa-link"></i> {{$advert->domain}}</li>
<li><i class="fa fa-link"></i> <a href="{{$advert->src}}" target="_blank">Visit full ad</a></li>
</ul>
</div>
@endforeach
我想从实例中获取上次查看日期 table。
SELECT MAX(date) AS "Last seen date" FROM instances WHERE ad_id =1
ad_id 是来自广告的主键 id table
我想将此查询的值传递给他们与上面相同的视图 adverts.index
循环是否必须在视图中完成?
或者我缺少的其他内容。
我会先看看你是否能得到每个 advert
至少有一个对应 instance
的最大日期。这样的事情应该可以解决问题:
$instances = DB::table('instances')
->select(DB::raw('*, MAX(date) as last_seen_date'))
->groupBy('ad_id')
->get();
如果你能先让它工作,那么你可以将它与你的 advertiser
和 adverts
表结合起来以匹配特定的广告商并获得每个广告的剩余信息。您还可以执行 leftJoin
以确保您抓取所有 adverts
,即使是没有任何匹配项的 instances
。
我也强烈建议您 define models,这样可以更轻松地在整个应用程序中创建可重用的查询片段 ("scopes")。