Yii2 基于日期的复杂排序
Complicated sorting based on date Yii2
我正在 yii2 中创建搜索。
$q = $_GET['q'];
$dataProvider = new ActiveDataProvider([
'query' => company::find()
->where('name like :name', [':name' => "$q%"])
]);
return $this->render('index', ['dataProvider' => $dataProvider,]);
我还有两个日期属性(有效付款从和到):
from_date and to_date
我需要显示结果,从有效付款的人开始。
如果我想先显示有效支付的公司,qyery应该怎么看?他们都应该按名称 ASC..
排序
我有一个函数可以在模型中获取这个值,但在查询中没有:
public function getValidPayment()
{
$today = date("Y-m-d");
return (($this->from_date <= $today) && ($today <= $this->to_date));
}
这是yii2
谢谢!
编辑:只是为了说明我需要什么:
- 根据名称查询公司(名称如:name')
- 优先考虑有效日期(from_date 和 to_date)
- 显示没有有效起止日期的其余部分(查询中的两个组都应按名称 ASC 排序)。
也许我应该在 2 个查询中执行此操作,然后以某种方式将它们组合起来?
'query' => company::find()
->select([
'valid_payment'=>"(('".$today."'<=to_date) AND (from_date<='".$today."'))",
name,
//...some fields you required in your grid
])
->where('name like :name', [':name' => "$q%"])
->orderBy('valid_payment DESC, name ASC')
不要忘记初始化 $today
我正在 yii2 中创建搜索。
$q = $_GET['q'];
$dataProvider = new ActiveDataProvider([
'query' => company::find()
->where('name like :name', [':name' => "$q%"])
]);
return $this->render('index', ['dataProvider' => $dataProvider,]);
我还有两个日期属性(有效付款从和到):
from_date and to_date
我需要显示结果,从有效付款的人开始。
如果我想先显示有效支付的公司,qyery应该怎么看?他们都应该按名称 ASC..
排序我有一个函数可以在模型中获取这个值,但在查询中没有:
public function getValidPayment()
{
$today = date("Y-m-d");
return (($this->from_date <= $today) && ($today <= $this->to_date));
}
这是yii2
谢谢!
编辑:只是为了说明我需要什么:
- 根据名称查询公司(名称如:name')
- 优先考虑有效日期(from_date 和 to_date)
- 显示没有有效起止日期的其余部分(查询中的两个组都应按名称 ASC 排序)。
也许我应该在 2 个查询中执行此操作,然后以某种方式将它们组合起来?
'query' => company::find()
->select([
'valid_payment'=>"(('".$today."'<=to_date) AND (from_date<='".$today."'))",
name,
//...some fields you required in your grid
])
->where('name like :name', [':name' => "$q%"])
->orderBy('valid_payment DESC, name ASC')
不要忘记初始化 $today