Laravel复杂范围查询关系(供审核)

时间:2015-10-18 20:52:47

标签: php laravel eloquent relationship

我写了这篇文章,我只是想知道它是否是最好的方法。 订单有很多交易...交易属于订单。我查询的订单的ID大于发送到履行的最后一个ID。然后我只想要已批准付款状态或离线付款类型的订单。

此代码有效,只是想知道它是否是最好的方法:

def checkWin(player):
    return any(all(board[square] == player for square in test)
               for test in wins)

修改

以下是SQL语法:

>>> board = [ 'O', 'X', ' ', 'O', ' ', 'X', 'O', 'X', 'X' ]
>>> wins = [[0,1,2],[3,4,5],[6,7,8],[0,3,6],[1,4,7],[2,5,8],[0,4,8],[2,4,6]]
>>> def checkWin(player):
...     return any(all(board[square] == player for square in test)
...                for test in wins)
... 
>>> checkWin('X')
False
>>> checkWin('O')
True

谢谢!

1 个答案:

答案 0 :(得分:2)

这绝对是构建此查询的正确Laravel方法。这几乎总是生成一个非常优化的查询,通常是LEFT JOIN或子查询或两者的组合。

如果您想查看生成的查询的最佳结果,请将->toSql()添加到该查询语句的末尾,并在此处发布原始查询语法。