var a = 1,x; // a = 1
x =
++a // a = 2
+
++a; // a = 3
// x = 5, x = 2 + 3
// a = 3, последняя операция ++a
x +=a; // x = 8, x = 5 + 3
console.log(x); //8
Напишите все на чем быстрее получится, посмотрите на нагрузку сервера, какие части ПО нагружают и это быстренько поправьте. А так завтра прочитаете что ассемблер, или еще что, делает все языки вместе взятые и опять начнете переписывать. А так у вас хотя бы есть рабочий вариант какой никакой и в сжатые сроки. Может и не нужно будет ничего переписывать, у меня такое часто бывает.
Наверно в цикле запускаете этот код? список каких то моделей? С вашей проверкой вы проверяете только первый объект, а остальные ниже нет. Чтоб поймать кота:
if (!$work->category) {
print_r($work);
}
Обычно проверяю свойство перед:
if ($work->category && $work->category->type == Category::TYPE_URGENT_WORK) {
// ...
}