Php 访问给出非静态方法的一对多关系时,不应按顺序访问Laravel5.3

Php 访问给出非静态方法的一对多关系时,不应按顺序访问Laravel5.3,php,eloquent,laravel-5.3,one-to-many,Php,Eloquent,Laravel 5.3,One To Many,我有两个模型产品和照片。这些模型如下 照片模型 产品模型 我需要一个产品类别的所有照片。为了这个,我试过这个 $Photo = Products::Photo()->where(['catagory' => $request->catagory])->get(); 但我得到了以下错误 IndexController.php第49行中的ErrorException:非静态方法 不应静态调用App\Product::Photo() 如何解决?问题是什么请使用下面的内容访问

我有两个模型产品和照片。这些模型如下

照片模型

产品模型

我需要一个产品类别的所有照片。为了这个,我试过这个

$Photo =  Products::Photo()->where(['catagory' => $request->catagory])->get();
但我得到了以下错误

IndexController.php第49行中的ErrorException:非静态方法 不应静态调用App\Product::Photo()


如何解决?问题是什么

请使用下面的内容访问某一类别产品的照片

$product = Products::where(['catagory' => $request->catagory])->with('Photo')->get();
$photo = $product->Photo;
var_dump($photo);
参见
Photo()产品
类的code>方法不是可以通过类名直接访问的方法(类的静态访问方法)

您可以尝试调用类的方法,就像我们使用静态方法一样

ClassName::Method_name()
但是您的Photo方法不是静态的,类也不是静态的

更新:对于关系,最好放置建立关系的相关外键(可选)

return $this->hasMany('App\Photo','your_foreign_key_for_this_relation');

它的可能副本是“Mthod Photo不存在”对不起,我的错,我已经更新了代码,请查看并匹配您的类名和方法名,并将
$product->Photo
改为
$product->Photo()
这是我的代码,这给了我未定义的属性异常$product=Products::where(['catagory'=>$request->catagory])->get()$照片=$product->photo;返回json_编码($photo);$product对象中没有称为Photo的索引。我也试过了。
$product=Products::where(['catagory'=>$request->catagory])->with('Photo')->get()
$product->Photo
ClassName::Method_name()
return $this->hasMany('App\Photo','your_foreign_key_for_this_relation');