2017-09-13 84 views
2

我有两个表类别和子类别,我想用它们的连接子类别显示类别。为此,我创建了一个查询。当我尝试使用一对多关系从类别表中获取类别名称时显示错误。SQLSTATE [42S22]:未找到列:1054'where子句'中的未知列'categories.sub_category_id' - Laravel 5

该表的结构为
类别; ID,名称
子类:身份证,CATEGORY_ID,子名

// Category.php model 
class Category extends Model 
{ 
    protected $primaryKey = 'id'; 
    protected $table = "categories"; 

    public function subcategories() 
    { 
     return $this->hasMany('App\SubCategory'); 
    } 
} 

// Subcategory.php model  
class SubCategory extends Model 
{ 
    protected $primaryKey = 'id'; 
    protected $table = "subcategories"; 

    public function category() 
    { 
     return $this->hasMany('App\Category'); 
    } 
} 

// Category Controller 
public function show() 
{  
    $categories= Category::all(); 
    $subcategories=Subcategory::all(); 
    return view('show',compact('categories','subcategories')); 
} 

// show.blade.php 
@foreach($subcategories as $subcategory) 
    {{ $subcategory->subname }} 
    {{ $subcategory->category_id }} 
    {{ $subcategory->category->name }} 
@endforeach 

此行给我的错误{{ $subcategory->category->name }}

+0

请问你的抽象作品?它是如何从“子类别”到“子类别”的。 – DanFromGermany

+0

我不明白你的观点。 –

+0

请发布模型类 –

回答

1

我需要改变的hasMany到属于关联

您是right因为子类只有一个类别,你需要使用belongsTo关系

class SubCategory extends Model 
{ 
    protected $primaryKey = 'id'; 
    protected $table = "subcategories"; 

    public function category() 
    { 
     return $this->belongsTo('App\Category'); 
    } 
} 
相关问题