模型Category.php
public function products() {
return $this->belongsToMany('App\Models\Product', 'category_product', 'category_id', 'product_id')->withTimestamps();
}模型Product.php
public function categories() {
return $this->belongsToMany('App\Models\Category', 'category_product', 'product_id', 'category_id')->withTimestamps();
}HomeController.php
$category = Category::products()->find($id);
return view('site.category.details',[
'details' => $category
]);details.blade.php
@dd($details->pivot->name)发布于 2018-11-02 22:20:50
当您定义belongsToMany关系时,它定义了给定类别的关系。但是通过调用Category::products()...,你还没有说出你想要哪个类别的产品。
在那里,您可以执行$category = Category::find($category_id)来获取类别,然后通过执行$category->products来检索该类别的产品。当然,您可以直接使用这样的产品:Category::find($category_id)->products。
如果调用->products,就会得到产品的结果集合。如果您使用圆括号->products()调用它,那么您将得到DB query类,然后它允许您添加更多的查询方法,比如:->products()->where('id', $product_id)->get()。
所以我在想,你可以把->find($id)放在->products()之后,而不是之前。
发布于 2018-11-02 22:29:10
发布于 2018-11-02 22:53:31
该警告是因为$this在静态方法调用中不可用,并且如果方法未声明为静态,则很可能有人会将$this语句添加到此方法中,而不需要在某个地方静态调用。
https://stackoverflow.com/questions/53120122
复制相似问题