我有一个在没有用户注意的情况下调用的函数,它只是在我的数据库上创建一行 功能就是这个:
public function createRow($year = 2015) {
$query = DB::table('myTable')->where('year', '=', $year)->get()->first();
// The rest of the function doesn't matter
}
这里的问题是我需要此函数的默认值为实际年份之前的年份。为了做到这一点,我试着说:
public function createRow($year = date('Y') - 1) {
$query = DB::table('myTable')->where('year', '=', $year)->get()->first();
// whatever
}
很明显它不起作用,所以我做了一个非常小的函数,返回实际年份之前的那一年,我尝试使用小函数的结果作为createRow()
函数的默认参数:
public function lastYear() {
return date('Y') - 1;
}
public function createRow($year = $this->lastYear()) {
$query = DB::table('myTable')->where('year', '=', $year)->get()->first();
// Whatever
}
我也尝试过定义一个全局变量:
protected $lastYear = date('Y') - 1;
但我得到了错误:
表达式不允许作为字段默认值
我希望你能帮助我。
非常感谢。
答案 0 :(得分:1)
试试这个:
public function createRow($year = null) {
if ($year == null)
{
$year = date('Y') - 1;
}
$query = DB::table('myTable')->where('year', '=', $year)->get()->first();
// whatever
}
答案 1 :(得分:0)
试试这个
public function createRow($year) {
if (!$year)
{
$year = date('Y') - 1;
}
$query = DB::table('myTable')->where('year', '=', $year)->get()->first();
// whatever
}
您可以更改if条件,因此如果$ year不包含有效值,您可以将其设置为函数开头的默认值。