2013-09-20 4 views
0

내 놓습니다 모델이 관계가있는 경우 :Laravel 4 웅변 + 원시 쿼리는 NULL을 반환

$place = Place::with('openhours')->where('id', '=', 5)->get(); 

내 테이블 :

Table Name : hours 
Fields : 
id   int(11) 
place_id int(11) 
open_time time 
close_time time 

테이블

public function openhours() 
{ 
    return $this->hasOne('Hours')->select(DB::raw("IF(CURTIME() BETWEEN open_time AND close_time ,'Open','Closed')")); 
} 

내 경로에

기록 :

id: 1 
place_id: 5 
open_time: 10:00:00 
close_time: 17:00:00 

는 그냥 반환 내가 phpMyAdmin을 수동으로이 쿼리를 실행하면

openhours:null 

그것을 잘 작동합니다.

내가 뭘 잘못하고 있니?

미리 감사드립니다.

+0

쿼리에서 원하는 열에 'select()'가 사용되었습니다. 장소가 열려 있는지 여부를 결정하는 모델에 대한 접근자를 만드는 것이 더 좋습니다. 왜 시간을 별도의 테이블에 넣었습니까? 귀하의 회신에 대한 – TLGreg

+0

고맙습니다, 나는 매일 다른 openhours 때문에 별도의 테이블에 시간을 넣어. 나는 여전히 날 필드를 넣어야 만한다 –

답변

2

다음을 App : before 필터에 추가하면 실행중인 모든 쿼리와 바인딩이 덤프됩니다.

DB::listen(function($sql, $bindings, $time) 
{ 
    var_dump($sql); 
    var_dump($bindings); 
}); 

답변이 없지만 웅변적인 요청을 자신의 SQL과 비교하는 데 도움이 될 수 있습니다.

+0

웅변적인 요청은 내 자신의 sql과 동일하다. phpmyadmin에서 실행하면 대답은 –

1

더 이상 필요하지 않습니다.

Place::find($id)->openhours(); 
+0

고맙다! 하지만 Place :: find ($ id) -> openhours(); 내가 SQL 요청 있지만 장소 데이터 및 Place :: find ($ id) -> ('openhours') -> first(); 나는 장소 데이터를 얻지 만 openhours는 NULL이다. 이게 같은 것이 아닌가? –