В методе контроллера я пытаюсь получить последнюю запись в таблице истории комментариев ревизии.
Итак, у меня есть это:
$RevisionSubstances = TableRegistry::get('RevisionSubstances');
$revision_history = $RevisionSubstances->find('all')->where(['substance_id' => $substance_id])->orderDesc('date')->first()-toArray();
debug($revision_history);
Это работает нормально - до тех пор, покапоскольку в таблице 'revision_substances'
есть записи, соответствующие критериям.
Я заметил, что для запросов, в которых не найдено подходящих данных (т. е. в базе данных, соответствующей запросу, нет записей), возникает ошибка:
Вызов функции-члена toArray()
в массиве
Мой обходной путь для этого - удалить toArray()
из запроса.Затем я использовал оператор if
, чтобы проверить, не является ли $revision_history
не null
перед вызовом toArray()
, например:
$revision_history = $RevisionSubstances->find('all')->where(['substance_id' => $substance_id])->orderDesc('date')->first();
if ($revision_history) {
$revision_history = $revision_history->toArray();
}
debug($revision_history);
Это работает и дает мне желаемый результат -вывод debug($revision_history);
равен null
, и приложение не генерирует фатальную ошибку.
Это правильный / лучший способ справиться с этим сценарием или есть более элегантный способ?Я чувствую, что необходимость в выражении if
не нужна?