2016-12-14 1 views
0

'jobs'및 'desired_skills'테이블이 두 개 있습니다. 테이블 구조는 다음과 같습니다.Laravel 5.3 내부 조인이 제대로 작동하지 않습니다.

작업 테이블 jobs Table

desired_skills 테이블 desired_skills.job_id 내가 (내가 지정된 URL의 인자로 $ id를 얻고있다 컨트롤러에서 ID를

을 jobs.job를 의미 desired_skils table

, 나는 인자가 원하는 값을 부여 받았다는 것을 확인할 수있다.)

$ 작업을 덤프하고 죽이면 작업 테이블의 값만 반환됩니다. 하지만 쿼리를 실행할 때

SELECT * FROM jobs INNER JOIN desired_skills ON desired_skills.job_id = jobs.job_id 원하는 값을 반환합니다.

내가 뭘 잘못하고 있니? 어떤 도움이라도 대단히 감사하겠습니다.

+0

[웅변 관계] (https://laravel.com/docs/5.3/eloquent-relationships)에 대해 들어 본 적이 있으십니까?! –

+0

넵하지만 추가 개발과 함께 웅변으로 열심히 할거야. 그래서 나는 질의 건물을 선택했다. – 14k

답변

2

나는 where 절의 내부에 조인을 래핑하는 것과 관련이 있다고 생각한다. 나는 그것이 당신에게 거기에 당신이 원하는 쿼리를 제공하고 있다고 생각하지 않습니다.

$jobs = DB::table('jobs') 
    ->join('desired_skills', 'desired_skills.job_id', '=', 'jobs.job_id') 
    ->where('jobs.employer_id', '=', $id) 
    ->get(); 
+0

고마워요. 그것은 멍 들었다. :) 거기에 무슨 일이 있었는지 궁금해. 빠른 답장을 보내 주셔서 다시 한 번 감사드립니다. – 14k

0

이 시도 :

$jobs = DB::table('jobs') 
       ->join('desired_skills', 'desired_skills.job_id', '=', 'jobs.job_id') 
       ->select('jobs.*', 'desired_skills.*') 
       ->get(); 
0

SELECT * FROM jobs INNER JOIN desired_skills ON desired_skills.job_id = jobs.job_id 가 동일하지 않습니다 쿼리 당신이 기능에 뭘 하려는지 있습니다. 이 쿼리에는 'jobs'테이블에 'employer_id'에 대한 언급이 없습니다 ( ).

대안으로는 의견에서 언급 한 것처럼 웅변적인 관계를 사용하는 방법이 있습니다. ->one-to-many relation (고용주가 여러 작업을 할 수 있습니다)

고용주 작업 DesiredSkill 고용주와 작업 사이

:

당신은 모델에 3 개 클래스가 필요합니다.

DesiredSkill과 Job 사이 ->one-to-one relation.

당신이 가입에서 얻으려는 것이 무엇인지 확실하지 않지만, 을 구현하면 관계를 허용하는 방법이 무엇이든 해결할 것이라고 생각합니다.

class Job extends Model 
{ 

    public function employer() 
    { 
     return $this->hasOne('App\Job'); 
    } 
} 

class Employer extends Model 
{ 

    public function jobs() 
    { 
     return $this->hasMany('App\Employer'); 
    } 

    public function desiredSkill() 
    { 
     return $this->hasOne('App\DesiredSkill'); 
    } 
} 

class DesiredSkill extends Model 
{ 

    public function job() 
    { 
     return $this->hasOne('App\DesiredSkill'); 
    } 
} 
관련 문제