2017-04-21 5 views
2

私は2モデルのモデルと写真を持っています。これらのモデルは、私は、製品catagoryのすべての写真を取得する必要がありアクセスする静的でないメソッドを与える1対多のリレーションは、静的にアクセスするべきではありません。エラー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:非静的メソッド のApp \製品::写真は()それを解決するためにどのように静的に

と呼ばれるべきではないのですか?そして何が問題なのですか?

+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

「Mthod Photo does not exist」と表示されています –

+0

ごめんなさい、コードを更新して、クラス名とメソッド名を見て一致させ、$ product-> Photo()の代わりに '$ product-> Photo'を入れてください – webDev

+0

ここに私のコードとth私には不確定なプロパティ例外が与えられます。 $ product = Products :: where(['catagory' => $ request-> catagory]) - > get(); $ photo = $ product-> Photo; return json_encode($ photo); –

関連する問題