【发布时间】:2014-01-25 01:19:55
【问题描述】:
您好,我以为我可以自己处理,但实际上我不知道如何咬它。
我正在尝试对我的程序进行分类。将只有 2 个级别的类别:
1 个类别
2 |-子类别
我希望它尽可能简单。
- 程序只能属于一个子类别,
- 类别可以有很多子类别,
- 子类别可以有很多程序,
当然,当有人选择主类别时,我想列出子类别中的所有程序。
我也不确定我当前的数据库表结构和模型中的关系。
数据库中的表:
程序:id、标题、描述、program_subcategory_id
programs_categories:id、名称
programs_subcategories:id、名称、 program_category_id
型号:
Program.php
class Program extends Eloquent {
protected $table = 'programs';
public function user()
{
return $this->belongsTo('User');
}
public function subcategory()
{
return $this->belongsTo('ProgramSubcategory', 'program_subcategory_id');
}
}
ProgramCategory.php
class ProgramCategory extends Eloquent {
protected $table = 'programs_categories';
public function subcategories()
{
return $this->hasMany('ProgramSubcategory');
}
}
ProgramSubcategory.php
class ProgramSubcategory extends Eloquent {
protected $table = 'programs_subcategories';
public function programs()
{
return $this->hasMany('Program');
}
public function category()
{
return $this->belongsTo('ProgramCategory');
}
}
实际控制器:
ProgramsController.php
class ProgramsController extends BaseController {
public function index()
{
$programs = Program::with('subcategory')->orderBy('programs.id', 'desc')->paginate(5);
$acategories = ArticleCategory::All();
$pcategories = ProgramCategory::All();
return View::make('programs.index', compact('programs', 'acategories', 'pcategories'));
}
}
ProgramsSubcatecories.php
class ProgramsSubcategories extends BaseController {
public function index($cname)
{
$programs = ProgramSubcategory::whereAlias($cname)->first()->programs()->orderBy('id', 'DESC')->paginate(10);
$pcategories = ProgramCategory::All();
$scategories = ProgramSubcategory::All();
$acategories = ArticleCategory::All();
return View::make('programs.index', compact('programs', 'pcategories', 'scategories ', 'acategories'));
}
public function show($cname, $id)
{
$category = ProgramSubcategory::whereAlias($cname)->first();
$program = $category->programs()->findOrFail($id);
$pcategories = ProgramCategory::All();
$acategories = ArticleCategory::All();
return View::make('programs.show', compact('program', 'category', 'pcategories', 'scategories ', 'acategories'));
}
}
通过急切加载列出一个类别中的所有项目对我来说不是问题。但我有问题如何处理 2 级类别。
请告知如何启动它。
【问题讨论】:
标签: php laravel laravel-4 eager-loading