使用Laravel 5.6,我试图从MySQL类别表中显示子类别的子类别。我想传递这个名字,并获得它的所有子类,而不管父类是什么。
类别表
id | name | cat_parent_id
--- | ------------------| -------------
1 | Parent - 1 | NULL
2 | Parent - 2 | NULL
3 | Child-1- P - 1 | 1
4 | Child-1- P - 2 | 2
5 | sCh-1-Ch-1-P- 2 | 4
6 | sCh-2-Ch-1-P- 2 | 4
7 | sCh-3-Ch-1-P- 2 | 4
8 | sCh-4-Ch-1-P- 2 | 4
9 | sCh-5-Ch-1-P- 2 | 4
期望结果
return App\Category::where('name','Child-1-P-2'))-
id | name | cat_parent_id
--- | ------------------| -------------
5 | sCh-1-Ch-1-P- 2 | 4
6 | sCh-2-Ch-1-P- 2 | 4
7 | sCh-3-Ch-1-P- 2 | 4
8 | sCh-4-Ch-1-P- 2 | 4
9 | sCh-5-Ch-1-P- 2 | 4
如果我理解得很好,要获得儿童
关系,您可以在App\Category
模型上使用以下方法:
// app/Category.php
public function children(): HasMany
{
return $this->hasMany(static::class, 'cat_parent_id', 'id');
}
然后获取主类别的所有子类:
use App\Category;
$children = Category::where('name','Child-1- P - 2')->first()->children;
下面是一个工厂的支持测试:
// database/factories/CategoryFactory.php
use App\Category;
$factory->define(Category::class, function (Faker $faker) {
static $id = 1;
return [
'name' => 'Category '.$id++,
'cat_parent_id' => null,
];
});
// tests/Unit/Models/CategoryTest.php
use App\Category;
/**
* @test
*/
public function returns_associated_child_records()
{
// create master records
factory(Category::class, 3)->create();
// get parent for the sub-categories
$parent = $master->first();
// create sub-categories
foreach(range(1, 4) as $id) {
factory(Category::class)->create([
'name' => 'Sub category '.$id,
'cat_parent_id' => $parent->id
]);
}
$this->assertEquals(
['Sub category 1', 'Sub category 2', 'Sub category 3', 'Sub category 4'],
Category::where('name', $parent->name)->first()->children->pluck('name')->toArray()
);
}
我在这里工作的假设是类别名称是唯一的——否则你必须循环记录的集合。
我正在开始使用Hibernate,有一个关于InheritanceType.Jointed和@PrimaryKeyJoinColumn的问题。 谈到Manager类时,我不确定要为@PrimaryKeyJoinColumn使用哪个值。通过阅读JPA规范,我应该在整个Superclass/Subclass/Subclass层次结构中只使用一个id,我怀疑它应该是person_id。 我是否应该从ma
目标 了解如何定义嵌套类和何时适合使用它们 了解使用嵌套类的副作用 了解 new 运算符在嵌套类中的特殊用法 了解如何和何时使用静态内部类和匿名内部类 在何处使用嵌套类 顾名思义,嵌套类(或内部类) 是在一个类中定义的另一个类。 public class EnclosingClass { . . . public class NestedClass { . . . } } 像成
Oracle留档(在下面的链接)说: 非静态嵌套类(内部类)可以访问封闭类的其他成员,即使它们被声明为私有的。 但在下面的示例中,我创建了一个对象(内部类),它无法访问其封闭外部类的任何方法或变量。下面是代码,你能解释一下吗? http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html 使用Main方法初始化 对于对象,我无法访问其
问题内容: 我可以做以下事情吗? 问题答案: 香草CSS不可能。但是,您可以使用类似: Sass使CSS再次变得有趣。Sass是CSS3的扩展,添加了嵌套规则,变量,mixins,选择器继承等。使用命令行工具或网络框架插件将其转换为格式良好的标准CSS。 要么 不用构造长的选择器名称来指定继承,在Less中,您可以简单地将选择器嵌套在其他选择器中。这样可以使继承更清晰,样式表更短。 例:
本页包含内容: 嵌套类型实例 嵌套类型的引用 枚举类型常被用于实现特定类或结构体的功能。也能够在有多种变量类型的环境中,方便地定义通用类或结构体来使用,为了实现这种功能,Swift允许你定义嵌套类型,可以在枚举类型、类和结构体中定义支持嵌套的类型。 要在一个类型中嵌套另一个类型,将需要嵌套的类型的定义写在被嵌套类型的区域{}内,而且可以根据需要定义多级嵌套。 嵌套类型实例 下面这个例子定义了一个结
我在当前项目中使用Sass(.scss)。 以下示例: HTML SCSS 这个很管用。 我可以处理多个类,同时使用嵌套样式。 在上面的示例中,我讨论了以下内容: CSS 在这种情况下,所有通常为,但为蓝色。 我如何在中与Sass嵌套?