개발 Q&A

제목 sysdate() 재 질문입니다 !
글쓴이 수야디벨 작성시각 2012/12/18 14:16:48
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 16767   RSS

저번에 질문 올리고 나서 , 몇 일을 계속 매뉴얼도 찾아보고 ,

관련 자료도 찾아봤는데 도저히 sysdate()를 활용하는 방법을 모르겠네요 ㅠ


보통 , 그냥 db에 insert 할 때는 그냥 sydate() 를 사용하면 편히 사용할 수 있는데,

이 값을 끌어 쓰려니 생각보다 어렵습니다.


timetable 이라는 테이블에는 timestamp 형식의 시간이 저장되어 있구요.(컬럼명은 regdate입니다)

모델에서 ..

$this->db->select('sysdate()',false);
$this->db->select('regdate');
$query = $this->db->get('timestamp');

print_r($query->result()) 라고 하면,

그 결과 값으로

Array ( [0] => stdClass Object ( [sysdate()] => 2012-12-18 14:11:05 [regdate] => 2012-12-14 17:09:08 ) [1] => stdClass Object ( [sysdate()] => 2012-12-18 14:11:05 [regdate] => 2012-12-14 18:24:27 ) )

라고 나옵니다.


그러면, 그냥 일반적인 쉬운 방법으로 ,

foreach($query as $row) :
$regdate = $row->regdate;
endforeach;

라고 하면, $redate라는 변수에 regdate가 들어가서, 하나의 변수처럼 가지고 놀 수가 있거든요~?

그런데, sysdate는

foreach($query as $row) :
$regdate = $row->sysdate() or sysdate;
endforeach;

라고 해도 .. 뽑히지가 않습니다. 가 저번 질문이였습니다.

웅파님이 얼리어싱을 받아서 하라고 했는데,

CI에서 값을 모델에서 보통 리턴 받을 때는 전 위에처럼 사용하거든요?

(다시 정리하면 ..

*model

$this->db->select('sysdate()',false);
$this->db->select('regdate');
$query = $this->db->get('timestamp');

return $query->result();


위처럼 다시 모델을 호출한 컨트롤러에 return시켜주고, 호출한 컨트롤러에서 ..

*controller

$this->load->model('model');
$data['query'] = $this->model->get(); 처럼

view로 넘겨줄땐  query를 변수처럼 사용해서

foreach($query as $row) :
endforeach 처럼 얼리어싱 해서 쓰곤하는데..



웅파님께서 말씀하신 sysdate()를 얼리어싱 해야한다는 소리가 아무리 생각해도

이해가 잘 되지 않네요 .ㅠ

(이미 sysdate()는 $query->result()에 포함되어 있는데 ???? $query->result()를 안하면 이를 받을 수가 없는데 ????? 얼리어싱은 db를 호출한 변수나, 모델에서 쓰인 $query 같은 변수를 얼리어싱 해야 하는거 아닌가??? 하는 생각이 꼬리를 물면서 멘붕입니다 ㅠ)

그렇다는 소리는 따로 뽑아서 따로따로 처리해야 한다는건가요?

위 형식에서 , redate랑 함께 뽑으면 ,

foreach($query as $row) :
$sysdate = $row->sysdate ??
$regdate = $row->sysdate() or sysdate;
endforeach;

식으로는 사용할 수 없는건가요?

웅파님께서 , select 관련 매뉴얼을 찾아 보라고는 하셨지만,

생각처럼 잘 찾아지지도 않고, 해결 방법이 없어서 다시 한번 질문드립니다 ~ㅜ
 다음글 minify 드라이버에 관해서 궁금한게 있습니다. (4)
 이전글 view 부분에 질문 드립니다. (2)

댓글

milosz / 2012/12/18 14:22:52 / 추천 0
이 알리아싱 말씀하신 것 같네요..
$this->db->select('sysdate() as sysdate',false);
$this->db->select('regdate');
$query = $this->db->get('timestamp');
return $query->result();

//

foreach($query as $row):
$sysdate = $row->sysdate;
endforeach;
 
수야디벨 / 2012/12/18 14:25:15 / 추천 0

milosz

아 .. !! 저는 결과 값에서만 얼리어싱 하려고 했지,

애초에 select를 얼리어싱할 생각을 못했네요 !!

와 , 정말 저 문제가지고 몇일을 고민했는지ㅠㅠ


제 부족함에 , 한탄을 느끼며 ,
 

답변에 감사한 마음을 느끼며 배워갑니다 ~

변종원(웅파) / 2012/12/18 15:28:18 / 추천 0
나름 힌트를 잘 드렸다고 생각했는데....

mysql select 매뉴얼 알리아싱. ^^
수야디벨 / 2012/12/20 15:34:55 / 추천 0
웅파 //

아마 .. 제가 select를 얼리어싱한다는 지식이 없어서.(아예 첨 듣는거라서)

웅파님이 주신 힌트를 이해하지 못했나봐요~


아마 제가 그러한 지식이 한번이라도 있었으면 '아! ' 하고 알아들었을 텐데 말이죠 ㅠㅠ

암튼 감사합니다 :)