일치하는 요소 만 사용하여 필터 결과를 출력하려고합니다.Laravel 4 Eager 로딩 필터링 및 일치하는 결과 만 선택
내가 (5됩니다 실제 프로젝트에서) 두 테이블을 가지고, 이제 companies
및 projects
을 가정 해 봅시다. 회사는 하나 이상의 프로젝트를 보유하고 있거나 보유하지 않을 수 있습니다. ,
/app/models/Company.php
<?php
class Company extends Eloquent {
public function projects() {
return $this->hasMany('Project','companyID');
}
protected $table = 'companies';
}
/app/models/Project.php
<?php
class Project extends Eloquent {
public function companies() {
return $this->belongsTo('Company','companyID');
}
}
내가하고 싶지는 다음과 같습니다
이러한 관계입니다 둘 다 결과를 얻고 싶지만 일치하는 매개 변수 만 사용해야합니다.
I이 시도했다 :
return Company::with(array('projects'=>function($query){
$query->where('id',99); //project's id is 99
}))->get();
제가 99
에서 1
의 값을 변경하는 경우는 (1 products.id와 결과가)는 this으로 변경 :
나는 단지 내가을 게시 한 두 번째 JSON에서 두 번째 결과를 얻을 싶어요.
당신이 (내가 확인 this parser을 사용하고 있습니다) 두 번째 JSON에서 볼 수 있듯이, 모든 기업에 관계없이 프로젝트의로드, 만 행은 객체 projects
이 일치합니다.
은의와 '더있을 것이고, 나는 단지 일치하는 요소를 필터링하는 방법을 모르겠어요.
은 또한 폐쇄 내부 having()
했지만, 여전히 동일한 같습니다
$query->having('projects.id','=',99);
출력이 유사한 프로젝트를 갖는 결과 만 포함한다 (루프를 사용하지 않고) 만 매칭 결과를 필터링하는 방법이 있는가 목적?
편집 : 사실, 5 개 테이블이을 필터링됩니다.
companies
, projects
, works
, users
및 user_works
는의가 있다고 가정 해 봅시다; "회사"에는 많은 프로젝트가 있습니다. "프로젝트"에는 많은 작품이 있습니다. "작품"에는 많은 사용자가 있고 "사용자"에는 하나 이상의 작품 (피봇 테이블 user_works)이있을 수도 있습니다.
모든 관계는 모델에서 올바르게 설정됩니다.
나는이에 글로벌 검색을 수행 할 수 있습니다. 같은
뭔가 : "나에게 5의 회사 ID와 4의 프로젝트 ID를 가진 사용자 ID를 하나의 작품을 가져와"하지만 필드 중 어느 것도 필수 없습니다. 이것들은 "프로젝트 ID 2에 모든 사람의 작품 가져 오기"또는 "ID 2 작품 가져 오기"또는 "오늘부터 모든 작품 가져 오기", "ID 1 작품을 가져와 프로젝트 2 ","회사 ID 1의 올해의 작품을 가져와 ". 사전
[여기] (http://forums.laravel.io/viewtopic.php?pid=53511#p53511)부터 시작하는 토론을 확인해 주실 수 있습니까? 보기보다 복잡합니다 (실제로 4 개의 테이블이 관련되어 있음). – Arda