我想在自定义计算的布尔属性上过滤一个Backpackforlaravel列表。数据库中没有此属性的列。
我已经在模型中创建了该属性作为雄辩的访问器。
public function getCalculatedBooleanAttribute($value)
{
$bool = // get result of calculation as true/false
return $bool;
}
然后我可以在控制器中使用以下内容将值显示为一列。
$this->crud->addColumn('calculated_boolean');
到目前为止,此方法运行良好,我可以在列表视图中看到预期的结果。我现在需要对此过滤视图...
我已经尝试使用addClause使用标准的Crud筛选器,但这给出了有关缺少数据库字段的异常。例如
$this->crud->addClause('where', 'calculated_boolean', '1');
Column not found: 1054 Unknown column 'calculated_boolean' in 'where clause'
我在文档中找不到任何显示如何对此属性进行过滤的内容。谁能建议一种方法来过滤数据库中没有列的字段?
答案 0 :(得分:1)
的确。您的访问器只是一个以某种方式操纵MySQL响应的PHP函数。您在Laravel访问器中执行的任何操作都会在数据库响应后发生。因此,您不能向口才查询添加访问器。
您可能可以使用whereRaw在addFilter闭包(第三个参数)中将该列添加到查询中:
basicConfig
请注意,您可以操纵import logging
from logging.handlers import RotatingFileHandler
from logging import FileHandler
def main():
def normalLogging(fn1):
global normalLogger
global normalLogger
normalLogger = logging.getLogger(fn1)
normalLogger.setLevel(logging.DEBUG)
handlerScreen = FileHandler(fn1)
handlerScreen.setFormatter(logging.Formatter('%(asctime)s %(message)s'))
normalLogger.addHandler(handlerScreen)
def rotatingLog(fn2):
global rotatingLogger
rotatingLogger = logging.getLogger(fn2)
rotatingLogger.setLevel(logging.DEBUG)
handlerScreen = RotatingFileHandler(fn2, maxBytes=1000, backupCount=3)
handlerScreen.setFormatter(logging.Formatter('%(asctime)s %(message)s'))
rotatingLogger.addHandler(handlerScreen)
# ... rest ...
t