Посторонним В.: Или в случае с первым методом вызывается не то, что вы думаете (вы упоминали некий класс View в комментариях ниже). Попробуйте пройтись по стеку обоих вызовов с дебаггером, чтобы посмотреть, что же лежит в $this->controller и $this->action в обоих методах.
Посторонним В.: В том-то все и дело, что первый тоже не должен работать, если не вызывать метод setAccesible(true) у объекта класса ReflectionMethod. Как сказал Павел Беляев, он может при таком вызове работать только если вы его перегрузили и сделали public, посмотрите внимательней.
Да, примерно так, только ограничитель transport_type + transport_id важно указывать на таблицу transports для гарантирования согласованности. Приложил схему к ответу.
Да, будет: If the first argument is a constant string and the second is a column of type SET, the FIND_IN_SET() function is optimized to use bit arithmetic. (это цитата из описания функции). К тому же, описание поле будет ограничителем, чтобы не было возможностить пихать в него, что попало.
Avarskiy: Эмпирическим путем было выяснено, что ORDER BY FIELD(status,'Активен') поставит записи со статусом "активен" в конец выборки (DESC, соответственно, в начало). Наркомания какая-то, потому что FIELD() вроде как не про это: https://dev.mysql.com/doc/refman/5.0/en/string-fun...
Что вы имеете ввиду под "включить AUTO_INCREMENT"? "назначить AUTO_INCREMENT" - в смысле явно задавать значение для поля или задать ему атрибут AUTO_INCREMENT?