2017-04-21 6 views
2

나는 두 개의 모델 제품 및 사진이 있습니다. 이 모델은 내가 제품 catagory의 모든 사진을 얻을 필요가액세스 하나가 아닌 많은 관계를 제공하는 정적이 아닌 방법 stethically 액세스 할 수 없습니다. 오류 Laravel5.3

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

사진 모델

public function Product(){ 
     return $this->belongsTo('App\Product'); 
    } 

제품 모델 다음이다. 이것을 위해 나는 이것을 시도했다

$Photo = Products::Photo()->where(['catagory' => $request->catagory])->get(); 

그러나 나는 뒤에 오는 과실을 얻고있다. IndexController.php 라인 49

ErrorException는 : 비 정적 메서드 앱 \ 제품 : 사진()

어떻게 그것을 해결하기 위해 정적으로 호출 할 수 없습니다? 그리고 무엇이 문제입니까

+0

가능한 중복 : 비 정적 메서드가 정적으로 호출 할 수 없습니다 PHP에서 (http://stackoverflow.com/questions/4684454/error-message-strict-standards-non-static-method-should-not-be-called-staticall) – miken32

답변

2

제품 카테고리의 사진에 액세스하려면 다음과 같이하십시오.

$product = Products::where(['catagory' => $request->catagory])->with('Photo')->get(); 
$photo = $product->Photo; 
var_dump($photo); 

Product 클래스의 Photo(); 방법을 사용하여 클래스 이름 (클래스의 방법 접근의 정적 방법)을 통해 직접 액세스 할 수있는 방법은 아닙니다 참조하십시오. 당신은

은 우리가 예를

ClassName::Method_name() 

정적 방법으로 할하지만 당신의 사진 방법도 클래스 정적 아니므로 같은 클래스의 메소드를 호출하려고합니다.

업데이트 : 관계를 들면, 그것의 더 나은 의 관계를 설정 (선택 사항) 관련 외래 키를 넣어

return $this->hasMany('App\Photo','your_foreign_key_for_this_relation'); 
[오류 메시지 엄격한 기준의
+0

그것은 '매드 포토가 존재하지 않는다' –

+0

죄송하지만, 코드를 업데이트하여 클래스 이름과 메소드 이름을보고 일치시키고'$ product-> Photo() '대신'$ product-> Photo'를 넣으십시오. – webDev

+0

여기 내 코드와 th가 있습니다. 내가 undefiened 속성 예외를 제공합니다 $ product = Products :: where ([ 'catagory'=> $ request-> catagory]) -> get(); $ photo = $ product-> Photo; return json_encode ($ photo); –