我的数据库中有一个模型(php类)和一个表。当我尝试find_many
没有where子句时,它会找到所有数据库条目。它为每个数据库条目创建一个模型。但是这些模型是空的,没有分配数据,因为我的模型有自己的setter / getter。
<?php
class City extends Model {
private $id;
private $idOwm;
private $idBla;
private $name;
private $longitude;
private $latitude;
private $country;
public function data() {
return $this->has_many('Data', 'idCity');
}
public function getId() {
return $this->id;
}
public function setId($id) {
$this->id = $id;
}
public function getIdOwm() {
return $this->idOwm;
}
public function setIdOwm($idOwm) {
$this->idOwm = $idOwm;
}
public function getIdBla() {
return $this->idBla;
}
public function setIdBla($idBla) {
$this->idBla = $idBla;
}
public function getName() {
return $this->name;
}
public function setName($name) {
$this->name = $name;
}
public function getLongitude() {
return $this->longitude;
}
public function setLongitude($longitude) {
$this->longitude = $longitude;
}
public function getLatitude() {
return $this->latitude;
}
public function setLatitude($latitude) {
$this->latitude = $latitude;
}
public function getCountry() {
return $this->country;
}
public function setCountry($country) {
$this->country = $country;
}
}
$cities = Model::factory('City')->find_many();
$cities
是一个包含许多City
类型模型的数组。
City Object
(
[id:protected] =>
[idOwm:protected] =>
[idBla:protected] =>
[name:protected] =>
[longitude:protected] =>
[latitude:protected] =>
[country:protected] =>
[orm] => ORM Object
(
[_connection_name:protected] => default
[_table_name:protected] => city
[_table_alias:protected] =>
[_values:protected] => Array
(
)
[_result_columns:protected] => Array
(
[0] => *
)
[_using_default_result_columns:protected] => 1
[_join_sources:protected] => Array
(
)
[_distinct:protected] =>
[_is_raw_query:protected] =>
[_raw_query:protected] =>
[_raw_parameters:protected] => Array
(
)
[_where_conditions:protected] => Array
(
)
[_limit:protected] =>
[_offset:protected] =>
[_order_by:protected] => Array
(
)
[_group_by:protected] => Array
(
)
[_having_conditions:protected] => Array
(
)
[_data:protected] => Array
(
[id] => 1
[idOwm] => 2950159
[idBla] => 0
[name] => Berlin
[latitude] => 52.52
[longitude] => 13.41
[country] => DE
)
[_dirty_fields:protected] => Array
(
)
[_expr_fields:protected] => Array
(
)
[_is_new:protected] =>
[_instance_id_column:protected] => id
)
)
如何在Idiorm / Paris使用我自己的setter / getter?这是可能的还是我必须以不同的方式做一些模型逻辑?
答案 0 :(得分:2)
你不能这样做,因为Idiorm依赖于__set()
和__get()
魔术方法 - 如果你包含相同名称的正确类属性,那么永远不会访问这些魔术方法。有关详细信息,请参阅PHP manualdocs link。
要使IDE正常工作,您可以使用专为此目的而设计的PHPDoc @property
commentsdocs link。我实际上并没有使用PHPStorm,但从我在其文档中可以看到它确实理解PHPDoc注释并可以使用它们来理解代码结构。
所以你的代码看起来像这样:
/**
* @property int $id
* @property int $idOwm
* @property int $idBla
* @property string $name
* @property string $longitude
* @property string $latitude
* @property string $country
*/
class City extends Model {
public function data() {
return $this->has_many('Data', 'idCity');
}
public function getId() {
return $this->id;
}
...
}
这个其他stackoverflow问题和答案表明这将在Netbeans中起作用:https://stackoverflow.com/a/15160464/461813
答案 1 :(得分:0)
只要我在模型顶部删除私有/受保护的类变量就可以了。
<?php
class City extends Model {
public function data() {
return $this->has_many('Data', 'idCity');
}
public function getId() {
return $this->id;
}
public function setId($id) {
$this->id = $id;
}
public function getIdOwm() {
return $this->idOwm;
}
public function setIdOwm($idOwm) {
$this->idOwm = $idOwm;
}
public function getIdBla() {
return $this->idBla;
}
public function setIdBla($idBla) {
$this->idBla = $idBla;
}
public function getName() {
return $this->name;
}
public function setName($name) {
$this->name = $name;
}
public function getLongitude() {
return $this->longitude;
}
public function setLongitude($longitude) {
$this->longitude = $longitude;
}
public function getLatitude() {
return $this->latitude;
}
public function setLatitude($latitude) {
$this->latitude = $latitude;
}
public function getCountry() {
return $this->country;
}
public function setCountry($country) {
$this->country = $country;
}
}
$cities = Model::factory('City')->find_many();
我想让那里的变量使用PHPStorm的代码生成真的很方便,但是你应该删除它们。