我正在尝试为现有的Laravel代码库添加一个新功能,在该代码库中就是这样:
$hasGAP = (new \App\Models\Policy)->where('leadID', $leadId)
->where('policystatus', '!=', 'Canceled')
->get()->where('product.name', 'GAP Insurance')->count() > 1;
因此,这是对\App\Models\Policy
模型引用的表进行SQL查询。它在做WHERE policystatus != 'Canceled'
,然后它得到了结果。然后它在结果上做WHERE
?这对我没有意义。
此外,product.name
不是表格中的列。实际上,似乎句点(.
)运算符将是非法字符..
这段代码是否真的有效,如果是,它实际上是做什么的?
答案 0 :(得分:1)
startwith
结束查询并以collection返回结果。
然后,随后的->where(..)
和->count()
将对集合进行调用。
点符号广泛用于Laravel中,用于获取数组,对象和类似数据结构的子字段(例如:array_get()),并且也可以在df.A.str.startswith(('E','V')).map({True:300,False:23})
Out[329]:
0 300
1 300
2 23
3 23
4 23
5 23
6 23
Name: A, dtype: int64
(在集合上)中工作。
所以发布的代码应该工作。我假设->get()
belongsTo(或hasOne)是一个产品,点符号用于搜索相关的产品名称。