我創建4個數據庫表:
Laravel 4個查詢關係關係
工具
ID | NAME | TOOLTYPE_ID
工具類型
ID | NAME
工具分類
ID | NAME
Tool_Toolcategory
TOOL_ID | TOOLCATEGORY_ID
的車型如下:
class Tool extends Eloquent {
public function toolCategories()
{
return $this->belongsToMany('ToolCategory', 'tool_toolcategory', 'tool_id', 'toolcategory_id');
}
public function tooltype()
{
return $this->belongsTo('ToolType');
}
}
class ToolType extends Eloquent {
public function tools()
{
return $this->hasMany('Tool', 'tooltype_id');
}
}
class ToolCategory extends Eloquent {
public function tools()
{
return $this->belongsToMany('Tool', 'tool_toolcategory', 'tool_id', 'toolcategory_id');
}
}
好吧,我的問題就是如何讓基於創建工具與特定Tooltype刀具toolcategories。
示例我想要所有與類型爲「軟件」的工具相關的類別。
我有點失落,我已經看了想在我toolcategory模型使用範圍,做這樣的事情:
public function scopeHasType($query, $type)
{
return $query->whereHas('tools.tooltype', function($q) use ($type)
{
$q->where('name', '=', $type);
})->exists();
}
這並沒有真正的工作:)然後我想這
$categories = ToolCategory::whereHas('tools.tooltype', function($query)
{
$query->where('tooltype_id', '=', 'Software');
})->get();
再次沒有運氣。所以我希望這對某人有意義,他們可以把我推向正確的方向。先謝謝你。
偉大的嵌套作用域!也錯誤的關鍵順序,很好的發現:)非常感謝。 – parapark
雄辯的命名約定小備忘單! –