我有 Laravel 多對多關系


我想在控制器中獲取所有帶有類別 ID,示例 1 的廣告
怎么了?如何通過資料透視表 category_id = 1 獲取所有模型?
$category_details = Categories::where('slug','=', $category_slug)->first();
$advertisements = Advertisement::with(['categories'=> function($query){
$query->wherePivot('categories_id', $category_details->id);
}])->get();

uj5u.com熱心網友回復:
您必須將 $category_details 變數傳遞給 Closure
$advertisements = Advertisement::with(['categories'=> function($query) use($category_details) {
$query->wherePivot('categories_id', $category_details->id);
}])->get();
uj5u.com熱心網友回復:
我認為將Categories您的模型重命名為單數形式并為其添加類似的關系是個好主意:
class Category extends Model
{
public function advertisements()
{
return $this->belongsToMany(Advertisement::class);
}
}
然后你可以簡單地這樣做:
$category = Category::where('slug','=', $category_slug)->firstOrFail();
return $category->advertisements()
->with('categories')
->get();
或者你可以讓它更漂亮一點:
return Category::where('slug','=', $category_slug)
->firstOr(fn() => Category::make())
->advertisements()
->with('categories')
->get();
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/401270.html
上一篇:為什么部署后上傳的圖片消失了?
