Объект Шрёдингера: откуда берется Trying to get property 'type' of non-object?
Наверно в цикле запускаете этот код? список каких то моделей? С вашей проверкой вы проверяете только первый объект, а остальные ниже нет. Чтоб поймать кота:if (!$work->category) {
print_r($work);
}
Обычно проверяю свойство перед:if ($work->category && $work->category->type == Category::TYPE_URGENT_WORK) {
// ...
}
может, ленивая загрузка.. попробуйте $work->getCategory()