我有兴趣在我的应用程序中显示电子邮件统计信息的快速计数,但我却想找到一种有效的方法来生成计数。我希望只是将某种雄辩的关系与某种"计算在哪里"刀片内部声明。
获取总计数应该按原样运行:
{{count($emails->mandrillemails)}}
但是这样可能吗?:
{{count($emails->mandrillemails->msg_state == 'bounced')}}
{{count($emails->mandrillemails->msg_state == 'open')}}
这是我的@if和@foreach语句的代码块:
@if(count($sentEmails) > 0)
@foreach ($sentEmails as $emails)
<tr>
<td>
@if(count($emails->mandrillemails) > 0)
<p><span class="badge"><i class="fa fa-paper-plane"></i> {{count($emails->mandrillemails)}}</span> <span class="badge"><i class="fa fa-exclamation-triangle"></i> {{count($emails->mandrillemails->msg_state == 'bounced')}}</span></p>
@endif
</td>
</tr>
当我尝试这个时,我在&#34; msg_state&#34;
上得到一个未定义的属性错误答案 0 :(得分:3)
你可以算上这样的关系:
$emails->mandrillemails()->whereMsgState('bounced')->count();
由于您@foreach
事情,您可能希望急于加载此数据。当您对关系进行计数时,这会更复杂一些 - 请参阅http://laravel.io/forum/05-03-2014-eloquent-get-count-relation和http://softonsofa.com/tweaking-eloquent-relations-how-to-get-hasmany-relation-count-efficiently/以获取一些可能的技术来急切加载计数值而不是整个相关项列表。
答案 1 :(得分:0)
$emails->mandrillemails()->whereMsgState('bounced')->count()
应该有用。