Laravel Nova 自指关系
Laravel Nova Self-referential Relationship
在 Laravel 中,如果我想创建一个自引用关系,我可以执行以下操作:
class Post extends Eloquent
{
public function parent()
{
return $this->belongsTo('Post', 'parent_id');
}
public function children()
{
return $this->hasMany('Post', 'parent_id');
}
}
如何让 Laravel Nova 资源显示此连接?
public function fields(Request $request)
{
return [
Text::make('Autor', 'author'),
Select::make('Type', 'type')->options([
'News' => 'news',
'Update' => 'update',
]),
BelongsToMany::make('Post') // does not work
];
}
你可以这样实现你想要的:
BelongsTo::make('Parent', 'parent', \App\Nova\Post::class),
HasMany::make('Children', 'children', \App\Nova\Post::class),
这将允许您在创建或更新 post 时选择父 post。当您进入 post 的详细信息页面时,您可以看到它的所有子项。
public function fields(Request $request)
{
return [
Text::make('Author', 'author'),
Select::make('Type','type')->options([
'News' => 'news',
'Update' => 'update',
]),
BelongsTo::make('Parent', 'parent', \App\Nova\Post::class),
HasMany::make('Children', 'children', \App\Nova\Post::class),
];
}
注意:请注意BelongsTo::make()
和HasMany::make()
的第三个参数是对Post的引用资源,不是Post模型。
还有另一种情况,您会发现同样的问题,如果您有父列名称 parent
以及关系 parent
,如
$table->bigIncrements('id');
$table->string('category');
$table->unsignedBigInteger('parent')->nullable();
和
在型号
public function parent()
{
return $this->belongsTo(SELF::class, 'parent');
}
将无法识别parent
属性,您将再次遇到此问题,这种情况下,您可以更改relationship name
或 column name
,它将正常工作。
还记得 Nova BelongsTo
关系
的参数
参数 1. 要显示的名称(例如 Parent
)
参数 2。模型中使用的关系名称(例如 parent
)
参数 3. Nova 资源(例如 App\Nova\Category
)
在 Laravel 中,如果我想创建一个自引用关系,我可以执行以下操作:
class Post extends Eloquent
{
public function parent()
{
return $this->belongsTo('Post', 'parent_id');
}
public function children()
{
return $this->hasMany('Post', 'parent_id');
}
}
如何让 Laravel Nova 资源显示此连接?
public function fields(Request $request)
{
return [
Text::make('Autor', 'author'),
Select::make('Type', 'type')->options([
'News' => 'news',
'Update' => 'update',
]),
BelongsToMany::make('Post') // does not work
];
}
你可以这样实现你想要的:
BelongsTo::make('Parent', 'parent', \App\Nova\Post::class),
HasMany::make('Children', 'children', \App\Nova\Post::class),
这将允许您在创建或更新 post 时选择父 post。当您进入 post 的详细信息页面时,您可以看到它的所有子项。
public function fields(Request $request)
{
return [
Text::make('Author', 'author'),
Select::make('Type','type')->options([
'News' => 'news',
'Update' => 'update',
]),
BelongsTo::make('Parent', 'parent', \App\Nova\Post::class),
HasMany::make('Children', 'children', \App\Nova\Post::class),
];
}
注意:请注意BelongsTo::make()
和HasMany::make()
的第三个参数是对Post的引用资源,不是Post模型。
还有另一种情况,您会发现同样的问题,如果您有父列名称 parent
以及关系 parent
,如
$table->bigIncrements('id');
$table->string('category');
$table->unsignedBigInteger('parent')->nullable();
和 在型号
public function parent()
{
return $this->belongsTo(SELF::class, 'parent');
}
将无法识别parent
属性,您将再次遇到此问题,这种情况下,您可以更改relationship name
或 column name
,它将正常工作。
还记得 Nova BelongsTo
关系
参数 1. 要显示的名称(例如 Parent
)
参数 2。模型中使用的关系名称(例如 parent
)
参数 3. Nova 资源(例如 App\Nova\Category
)