我有3张桌子
1广告客户
2个广告
广告客户可以有多个广告
3个实例
广告可以有多个日期 - 日期是实例表中的列
$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
我想从实例表中获取最后一次看到的日期。
SELECT MAX(date) AS "Last seen date" FROM instances WHERE ad_id =1
ad_id是广告表
中的主键ID我想将此查询的值传递给它们与上面相同的视图 adverts.index
循环必须在视图中完成吗?
或者我想念的其他东西。
答案 0 :(得分:1)
我首先会看到您是否可以获得至少有一个advert
的每个instance
的最长日期。这样的事情可以解决问题:
$instances = DB::table('instances')
->select(DB::raw('*, MAX(date) as last_seen_date'))
->groupBy('ad_id')
->get();
如果您可以先使用此功能,则可以将其与advertiser
和adverts
表格结合使用,以匹配特定广告客户,并获取每个广告客户的剩余信息广告。您还可以执行leftJoin
以确保抓取所有adverts
,即使是那些没有匹配instances
的{{1}}。
我还强烈建议您define models,这样可以更轻松地在整个应用程序中创建可重复使用的查询片段(“范围”)。