嗨,我想我可以自己處理這個,但實際上我不知道如何咬它。Laravel 4渴望加載和類別,子類別,文章
我想分類我的程序。將只有2級類別:
1類
2 | -Subcategory
我希望它是儘可能簡單。
- 程序只能屬於一個子類別,
- 類別可以有很多小類,
- 子類別可以有很多方案,
我當然想列出從子類別中的程序,當有人選擇主要類別。
我也不確定我當前的數據庫表結構和模型中的關係。
表在數據庫:
程序: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級分類做到這一點。
請指教如何啓動它。
我看到Baum會是這裏最棒的。但它不支持我正在使用的Laravel 4.1。我真的需要使用嵌套集嗎?沒有其他方法嗎? – SONGE
我只想去嵌套集合 - 因爲這個模型不需要遞歸來檢索樹,它意味着它很快,可以在數據庫服務器上完成。 – Andreyco
我選擇了lazychaser的嵌套集。如果我錯了,請糾正我。只是爲了讓我清楚:)如果我想使用嵌套集合,我的數據庫(** programs_categories **和** programs_subcatecories **)中的2個表的intead,我只需要使用一個,只需**類別** 。此外,而不是兩個模型** Category.php **和** Subcategory.php **我只需要一個** Category.php **。另外我有點困惑如何設置我的類別的順序使用嵌套集。 – SONGE