我遇到了一些奇怪的事情。我尝试使用whereNull和where语句进行查询。当我只使用whereNull时,它会返回结果,但当我添加where语句时,即使应该有2个结果,也不会返回任何结果。
whereNull
where
$user ->shoePurchases() ->whereNull('completed_at') ->where('status', '!=', 'failed') ->get();
shoePurchases关系是简单的hasMany关系
shoePurchases
6rqinv9w1#
您可以执行这些操作以查找问题查看数据:确保存在未标记为“失败”且尚未完成的鞋子购买。要执行此检查,请直接在数据库上执行以下查询:
SELECT * FROM shoe_purchases WHERE completed_at IS NULL AND status != 'failed';
删除状态的where子句并查看是否得到任何结果。这将帮助您确定问题是与状态的whereNull还是where子句有关。
$user ->shoePurchases() ->whereNull('completed_at') ->get();
使用orWhere方法:与其使用多个where子句,不如使用orWhere方法来检索未完成或状态不是“失败”的鞋子购买。
$user ->shoePurchases() ->where(function($query) { $query->whereNull('completed_at') ->orWhere('status', '!=', 'failed'); }) ->get();
0s0u357o2#
在这种情况下,我猜所有状态为!= 'failed'的购买都已完成_at不为空
2条答案
按热度按时间6rqinv9w1#
您可以执行这些操作以查找问题
查看数据:确保存在未标记为“失败”且尚未完成的鞋子购买。要执行此检查,请直接在数据库上执行以下查询:
删除状态的where子句并查看是否得到任何结果。这将帮助您确定问题是与状态的whereNull还是where子句有关。
使用orWhere方法:与其使用多个where子句,不如使用orWhere方法来检索未完成或状态不是“失败”的鞋子购买。
0s0u357o2#
在这种情况下,我猜所有状态为!= 'failed'的购买都已完成_at不为空