2017-01-17 1 views
0

whereHas 중첩 된 where 절을 사용하고 있지만 그렇게 할 수 없습니다. 내가 전화하면Laravel : 중첩 된 위치에서 belongsToMany 관계에 액세스 할 수 없습니다.

<?php 

namespace App\Models; 

use Illuminate\Database\Eloquent\Model; 

class User extends Model 
{ 
    public function scopePickedUser($query, $pickedTypeID) 
    { 
     return $query->where(function($query) use ($pickedTypeID) 
     { 
      $query->whereHas('photos', function($query) use ($pickedTypeID) 
      { 
       $query->whereTypeId($pickedTypeID); 
      }); 


      if($condition){ 
       $query->orWhere('another_column_id',$var); 
      } 
     }); 
    } 

    public function photos() 
    { 
     return $this->belongsToMany(Photo::class); 
    } 
} 

, App\Models\User::pickedUser(4)->get() 내가 오류 BadMethodCallException with message 'Call to undefined method Illuminate\Database\Query\Builder::photos()' 무엇입니까 : 다음 나의 모델입니다. 왜 그런가요? 내가 도대체 ​​뭘 잘못하고있는 겁니까?

+0

가 ('사진')와이 한 번 응용 프로그램 \ 모델 \ 사용자 : 시도 두 가지 유형을 시도 할 수 있습니다 생각 -> pickedUser (4) -> GET() – vijaykumar

답변

0

Eager Loading 및 Lazy Eager Loading의 경우 laravel with을 참조하십시오. 난 당신이

App\Models\User::with('photos')->pickedUser(4)->get() 

또는

public function scopePickedUser($query, $pickedTypeID) 
    { 
     $query->load('photos'); 
     return $query->where(function($query) use ($pickedTypeID) 
     { 
      $query->whereHas('photos', function($query) use ($pickedTypeID) 
      { 
       $query->whereTypeId($pickedTypeID); 
      }); 


      if($condition){ 
       $query->orWhere('another_column_id',$var); 
      } 
     }); 
    } 
관련 문제