count()" where" Laravel刀片中的陈述?

时间:2015-06-17 14:03:13

标签: laravel laravel-4 blade

我有兴趣在我的应用程序中显示电子邮件统计信息的快速计数,但我却想找到一种有效的方法来生成计数。我希望只是将某种雄辩的关系与某种"计算在哪里"刀片内部声明。

获取总计数应该按原样运行:

{{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;

上得到一个未定义的属性错误

2 个答案:

答案 0 :(得分:3)

你可以算上这样的关系:

$emails->mandrillemails()->whereMsgState('bounced')->count();

由于您@foreach事情,您可能希望急于加载此数据。当您对关系进行计数时,这会更复杂一些 - 请参阅http://laravel.io/forum/05-03-2014-eloquent-get-count-relationhttp://softonsofa.com/tweaking-eloquent-relations-how-to-get-hasmany-relation-count-efficiently/以获取一些可能的技术来急切加载计数值而不是整个相关项列表。

答案 1 :(得分:0)

$emails->mandrillemails()->whereMsgState('bounced')->count()应该有用。