namespace App ;
use Illuminate \Database \Eloquent \Model ;
class Category extends Model
{
/**
* Get subcategories.
*
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function subcategories ()
{
return $ this ->hasMany (Subcategory::class);
}
}
namespace App ;
use Illuminate \Database \Eloquent \Model ;
class Subcategory extends Model
{
/**
* Get category.
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function category ()
{
return $ this ->belongsTo (Category::class);
}
/**
* Get news.
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
*/
public function news ()
{
return $ this ->belongsToMany (News::class);
}
}
namespace App ;
use Illuminate \Database \Eloquent \Model ;
class News extends Model
{
/**
* Get subcategories.
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
*/
public function subcategories ()
{
return $ this ->belongsToMany (Subcategory::class);
}
/**
* Fetch news by category.
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @param int $id
*
* @return \Illuminate\Database\Eloquent\Builder
*/
public function scopeByCategory ($ query , $ id )
{
return $ query ->whereHas ('subcategories ' , function ($ query ) use ($ id ) {
$ query ->where ('category_id ' , $ id );
});
}
}
Fetching news by category
$ category = Category::find (1 );
News::byCategory ($ category ->id )->get ();
nice