Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何获取三个级别类别(类别、子类别、子类别三)的数据并显示所选类别下的相关数据_Php_Laravel - Fatal编程技术网

Php 如何获取三个级别类别(类别、子类别、子类别三)的数据并显示所选类别下的相关数据

Php 如何获取三个级别类别(类别、子类别、子类别三)的数据并显示所选类别下的相关数据,php,laravel,Php,Laravel,我有三张桌子。结构如下: 1. categories id - integer name - string 2. sub_Categories id - integer category_id - integer name - string 3. sub_catergory_threes id - integer sub_Category_id - integer name- string 现在我想显示三个级

我有三张桌子。结构如下:

1. categories

    id - integer

    name - string

2. sub_Categories

    id - integer

    category_id - integer

    name - string


3. sub_catergory_threes

    id - integer

    sub_Category_id - integer

    name- string
现在我想显示三个级别的类别,比如,类别,当鼠标悬停在任何类别项上时,该类别的子类别显示,当鼠标悬停在任何子类别项上时,该子类别的子类别显示

我在用laravel Elotent这是我的模型

类别模型

子类别模型

子类别三模型


您可以使用雄辩的关系来加载所有相关数据

$categories = App\Category::with('subcategories.subcategoriesthree')->get();
这将加载所有类别及其子类别和子类别

如果需要动态加载,那么在控制器中可以使用

public function loadSubCategory($categoryId)
{
    $category = App\Category::findOrFail($categoryId);
    $subcategories = $category->subcategories()->get();
    return $subcategories;
}

public function loadSubSubCategory($subcategoryId)
{
    $subcategory = App\SubCategory::findOrFail($subcategoryId);
    $subsubcategories = $subcategory->subcategoriesthree()->get();
    return $subsubcategories;
}

因此,您可以按如下方式编辑模型:

子类别

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

public function category(){
    return $this->belongsTo('App\Category', 'category_id');
}
子类别三个

public function subcategory(){
    return $this->belongsTo('App\SubCategory', 'sub_Category_id');
}
在控制器中:

$categories = Category::with(['subcategories', 'subcategories.subcategoriesthree'])->get();

然后,您可以
dd($categories)
并在
子类别下查看
子类别三个

是的,它显示所有记录表单三个表(Thanx,new lesson),但我想悬停,只显示类别所选项目的子类别。我已经编辑了答案。请检查是否工作非常感谢@mare99这是我想要的工作。再次感谢您
$categories=App\Category::with('subcategories.subcategoriesthree')->get()此保存生命您可以展示您的
dd($categories)
以及您的期望吗?非常感谢@mare99这是我想要的。欢迎您。别忘了记下答案@阿里扎
public function subcategoriesthree(){
    return $this->hasMany('App\SubCategoryThree');
}

public function category(){
    return $this->belongsTo('App\Category', 'category_id');
}
public function subcategory(){
    return $this->belongsTo('App\SubCategory', 'sub_Category_id');
}
$categories = Category::with(['subcategories', 'subcategories.subcategoriesthree'])->get();