2016-06-09 2 views
0

У меня есть функция, которая вызывается без уведомления пользователя, и она просто создает строку в моей базе данных.
Функция это одна:Как передать результат функции как значение по умолчанию для другой функции?

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; 

, но я получил ошибку:

expression is not allowed as field default value

Надеюсь, вы можете мне помочь.

спасибо.

ответ

1

Попробуйте это:

public function createRow($year = null) { 
    if ($year == null) 
    { 
     $year = date('Y') - 1; 
    } 
    $query = DB::table('myTable')->where('year', '=', $year)->get()->first(); 
    // whatever 
} 
+0

Большое спасибо, я полностью забыл об этом. Спасибо, что напомнил мне об этом. Это то, что я искал. – Xulvi

0

Попробуйте

public function createRow($year) { 

    if (!$year) 
    { 
     $year = date('Y') - 1; 
    } 

    $query = DB::table('myTable')->where('year', '=', $year)->get()->first(); 
    // whatever 
} 

Вы можете изменить, если условие, так что если $ год не содержит действительное значение, которое вы можете установить это значение по умолчанию в начале функции.

+1

Большое спасибо, я не знал, что смогу это сделать. Очень хорошо иметь другие варианты. Еще раз спасибо. – Xulvi

Смежные вопросы