0
저는 Laravel Eloquent로이 쿼리를 작성하는 방법을 알아 내려고 노력하고 있습니다.Laravel Eloquent의 고급 쿼리
검색어 :
DB::select('SELECT
n.id,
n.parent_id,
n.name,
n.file,
n.created_at AS ts,
f.mime,
f.extension,
IF(ch.id, 1, 0) AS dirs
FROM nodes AS n
LEFT JOIN nodes AS ch ON ch.parent_id=n.id
LEFT JOIN files AS f
ON n.file = f.id
WHERE n.parent_id=?
GROUP BY n.id',array($path));
나는 나의 모델 테이블 nodes
을 사용 Node
을 가지고 내가 가입해야 다른 모듈 return $this->belongsTo('NodeFile');
포함, 내 Node
모델하는 방법 nodefile()
있습니다. NodeFile
모듈은 files
테이블을 사용하고이 두 테이블은 nodes.file
및 files.id
에 바인딩됩니다.
Node::with(
array('nodefile'=>function($query){
$query->select('mime','extension');
})
)->where('name','LIKE','%'.$q.'%')->get(array(
'id', 'parent_id', 'name', 'file', 'created_at AS nts'
));
하지만 난 여전히 내 쿼리에서 IF(ch.id,1,0) AS dirs
필요합니다
이것은 내가 지금까지 무엇을 가지고 있습니다. 자기조차도하지 않았습니다.
누구나 가능한 가장 좋은 방법으로 어떻게 할 생각인가?
왜 원시 쿼리()에 보관할 수 없습니까? ORM은 물건을 단순화하기 위해 발명 된 것이지 테이블을 머리에 대고 쾅 사게하지는 않습니다. ORMified가 될 수있는 것 - 좋습니다, Eloquent를 통해 확인하십시오. 그러나 일부 쿼리는 ORMS로 실행되지 않습니다. 그럼, 고문하지 말자. –
'$ query-> select (DB :: raw (...)) '를 할 수있다. –
당신은 관계에 대한 충분한 정보를 제공하지 않았고'IF (ch .id, 1, 0) as dirs', 그래서 도울 수는 없지만 [이 기사] (http://heera.it/laravel-model-relationship#.U0QUFvmSySo) Eloquent' 관계 기술. –