get()后执行where()

时间:2018-05-22 02:45:50

标签: laravel eloquent

我正在尝试为现有的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不是表格中的列。实际上,似乎句点(.)运算符将是非法字符..

这段代码是否真的有效,如果是,它实际上是做什么的?

1 个答案:

答案 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)是一个产品,点符号用于搜索相关的产品名称。