如何在 Laravel 查询中执行 IS NOT NULL

How to do IS NOT NULL in a Laravel query

我正在尝试执行此 SQL 语句并使用 blade 引擎输出它:

" SELECT SUM(like) FROM likes WHERE post_id = ". $post->id. " AND source_id IS NOT '' "

我不知道该怎么做,我昨天试过了,但没有用:

{{$post->likes->where('post_id', $post->id)->where('source_id', '<>', '')->sum('like')}}

喜欢table"belongsTo"来源table和帖子 table.

编辑:

我正在使用 Laravel 版本 5.2.45

你试过这样吗...

{{$post->likes->where('post_id', $post->id)->whereNotNull('source_id')->sum('like')}}

也试试

{{$post->likes->
where([
    ['post_id', '=', $post_id],
    ['source_id', '<>', NULL],])
->sum('like') }}

你可以使用whereNotNull()方法。

https://laravel.com/docs/5.3/queries#where-clauses

更新

看来$posts是合集。在这种情况下,您将不得不使用 filter()。例如:

$collection->filter(function ($item) {
    return $item['some_value'] !== null;
});

对于Laravel 4./5。它的 whereNotNull() 和 Laravel 3:它的 where_not_null()。

如果版本是 Laravel 4./5.,

那么你的查询将是这样的
{{$post->likes->where('post_id', $post->id)->whereNotNull('source_id')->sum('like')}}

如果版本是Laravel 3,

,查询将是这个
{{$post->likes->where('post_id', $post->id)->where_not_null('source_id')->sum('like')}}