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

Posted

技术标签:

【中文标题】如何在 Laravel 查询中执行 IS NOT NULL【英文标题】:How to do IS NOT NULL in a Laravel query 【发布时间】:2017-05-09 02:44:05 【问题描述】:

我正在尝试执行此 SQL 语句并使用刀片引擎将其输出:

" 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')

likes 表“属于”sources 表和 posts 表。

编辑:

我使用的是 Laravel 版本 5.2.45

【问题讨论】:

请指定您使用的 laravel 版本。 【参考方案1】:

您可以使用whereNotNull() 方法。

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

更新

看来$posts 是一个集合。在这种情况下,您必须使用filter()。例如:

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

【讨论】:

当我尝试那个时收到错误消息ErrorException in Macroable.php line 74: Method whereNotNull does not exist. 我这样称呼它:`

总喜欢: $post->likes->where('post_id', $post->id)->whereNotNull ('source_id')->sum('like')

`
Offtopic :您应该考虑检查控制器中的数据,而不是检查视图。 这似乎可行,谢谢!不过还是得做更多的测试。【参考方案2】:

你试过这样吗……

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

也可以试试

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

【讨论】:

没有where_not_null,是whereNotNull() source_id &lt;&gt; NULL 永远不会是 TRUE。【参考方案3】:

对于 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')

【讨论】:

我在尝试那个时收到错误消息ErrorException in Macroable.php line 74: Method whereNotNull does not exist. 我尝试了上面的查询,它正在工作。所以请告诉我你试过什么? `

总点赞数:$post->likes->where('post_id', $post->id)->whereNotNull('source_id')->sum('like ')

`对不起,封闭的代码似乎不起作用。
尝试从上述查询中删除 sum(like)。 我仍然收到错误Method whereNotNull does not exist.

以上是关于如何在 Laravel 查询中执行 IS NOT NULL的主要内容,如果未能解决你的问题,请参考以下文章

Python 操作Redis

python爬虫入门----- 阿里巴巴供应商爬虫

Python词典设置默认值小技巧

《python学习手册(第4版)》pdf

Django settings.py 的media路径设置

Python中的赋值,浅拷贝和深拷贝的区别