현재 mvc 프레임 워크 (PHP)에서 작업 중입니다. 나는 cakePHP가 "belongsTo"와 "hasMany"기능을 사용할 수있는 능력이 있다는 것을 알았다. 내 기능을 만들려고하는데 문제가 발생했습니다."hasMany"및 "belongsTo"모델을 만드는 방법은 무엇입니까? (cakePHP와 같음)
약속 테이블 (id, where, date, year_id)과 연도 테이블 (id, year)이 있다고 가정 해 보겠습니다. 나는이 예제가 문제없이 하나의 테이블로 수행 될 수 있음을 알고 있지만, 단지 예일 뿐이다.
class appointment_model extends model{
public $_belongs_to= array('table'=>'year','field_connector'=>'year_id');
public $one_value;
}
......
class year_model extends model{
public $_has_many= array('table'=>'appointment','field_connector'=>'year_id');
public $many_values;
}
....
class model{
private function select($query=null){
if(!$query)die("Query cannot be null. Line num: " . __LINE__);
$results = $this->_db->mysql_select($query);
if(count($results)==1){
$one = $this->initialize($results[0]);
$this->_do_for_other_tables($one);
return $one;
}elseif(count($results)>1){
$returns = array();
foreach($results as $result){
$one = $this->initialize($result);
$returns[] = $this->_do_for_other_tables($one);
}
return $returns;
}else{
return null;
}
}
private function _do_for_other_tables(&$one, $rec=1){
if(property_exists($this, 'many_values')){
if(!empty($one->many_values))return;
$many = functions::load_model($this->_has_many["table"]);
$res = $many->find_by($this->_has_many["field_connector"], $one->id);
$one->many_values = $res;
}
elseif(property_exists($this, 'one_value')){
if(!empty($one->_belongs_to))return;
$only_one = functions::load_model($this->_belongs_to["table"]);
$field = $this->_belongs_to['field_connector'];
$res = $only_one->find_by('id', $one->$field);
$one->one_value = $res;
}
}
}
기본적으로 여기에서 발생하는 나는 무한 루프에 들어갈 것입니다. 어떤 제안이라도 어떻게 고칠 수 있습니까? 더 설명해야한다면 그냥 말하십시오.
감사합니다. :).
왜 다시 바퀴를 다시 만들었습니까? 교리는 그걸 상자에서 꺼내! – Francesco
@Francesco : 다른 사람들도 그렇게하지 않는 방식으로 작동하는 방식을 알고 싶지 않기 때문이 아닙니다. 나는 그들 모두가 나의 것에 적합하지 않았기 때문에 내 요구에 맞는 프레임 워크를 직접 만들었다. 여기 Vizualni에 대해서도 똑같이 ... –