2017-10-12 5 views
0

지정한 열이 다른 테이블의 외래 키인 행 수를 얻는 올바른 방법은 무엇입니까? 여기에 무슨 뜻입니까 :Lolavel에서 조인 된 행 수 얻기

나는 providersproducts 테이블이 있습니다. 공급자 테이블에는 기본 키 provider_id이 있고 테이블 products에는 provider_id에 대한 외래 키 참조가 같은 이름의 열 provider_id을 통해 있습니다. 제 의도는 모든 제품을 포함하여 각 공급자의 세부 정보를 가져 오는 것입니다. 이 테이블의 providers_id 테이블과 일치하는 모든 인스턴스가 포함됩니다. 내가 잘못 뭐하는 거지

Undefined property: Illuminate\Database\MySqlConnection::$id (View: /var/www/test/app/resources/views/agent/serviceproviders/index.blade.php) 

:

$data = DB::table('providers') 
      ->join('products', 'products.provider_id', '=', 'providers.provider_id') 
      ->select(
       'providers.provider_id AS id', 
       'providers.provider_name AS name', 
       DB::raw("count(products->where('products.provider_id','=','providers.provider_id')) AS total_products"), 
       'providers.claims AS claims', 
       'providers.settlements AS settlements') 
     ->groupBy('provider') 
     ->get(); 

이것은 내가 아래의 오류를 얻고으로 작동하지 않을 것 같다

여기 내 코드입니까?

+0

고맙습니다. @Oluwafemi Sule. –

+0

아마도 products.id와 충돌합니다. 왜 별칭을 사용하지 않더라도 별칭을 제공합니까? –

+0

@AnarBayramov 제품이 없습니다 .id. 두 테이블 사이의 공통적 인 측면은 providers.provider_id 인 제공자 테이블의 기본 키입니다 (예, 사람들이 자주 사용하는 일반 ID 대신 자동으로 증가하는 provider_id 열 이름). 나는 문제를 발견하고 그것을 분류했다, 나는 정확한 코드를 게시하려하고있다. –

답변

0

문제점은 행을 계산하는 방법과 올바른 계산을 위해 데이터를 그룹화하는 방법에있었습니다. 너무 바보 같아서, 너무 쉬웠 어. 올바른 코드는 다음과 같습니다.

$data = DB::table('providers') 
      ->join('products', 'products.provider_id', '=', 'providers.provider_id') 
      ->select(
       'providers.provider_id AS id', 
       'providers.provider_name AS name', 
       DB::raw("count(products.provider_id) AS total_products")) 
     ->groupBy('providers.provider_id') 
     ->get(); 
+0

[답변을 수락하십시오] (https://stackoverflow.com/help/self-answer)를 사용하면 같은 질문을 가진 미래의 방문자를 도울 수있을뿐 아니라 누구나 이미 귀하가 문제. –