Как определить поля модели с помощью idiorm/granada, не нарушая функциональность ORM?
PHP-норма Granada на основе Idiorm работает следующим образом для извлечения полей из базы данных:
class ORM {
...
public function __get($key) {
return $this->get($key);
}
}
class ORMWrapper extends ORM {
...
public function get($key) {
if (method_exists($this, 'get_' . $key)) {
return $this->{'get_' . $key}();
} elseif (array_key_exists($key, $this->_data)) {
return $this->_data[$key];
}
elseif (array_key_exists($key, $this->ignore)) {
return $this->ignore[$key];
}
// and so on ...
}
Моя проблема в том, что если я определю public $field
в моих модельных классах магический метод __get не вызывается, и поэтому ORM не получает поле из базы данных?
Как я могу
- Быть в состоянии объявить
public $field
в моих модельных классах - По-прежнему называть магическим добытчиком, если
$field
не определено
В то же время?
1 ответ
Все, что я на самом деле хотел сделать, - это иметь автозаполнение, работающее с Ne tBeans.
Просто объявив, что мои классы Model так и сделали:
/**
* @property int $address_id
* @property Address $address
* @property String $name
* ...
*/
class Activity extends Model {
public function address() {
return $this->belongs_to('Address');
}
//...
}
Таким образом я могу сделать
$activity->address->name;
И у меня есть завершение и ORM, оба работают.