【发布时间】:2021-05-21 13:23:23
【问题描述】:
我有一个基于下表的 laravel 模型:
public function up()
{
Schema::create('things', function (Blueprint $table) {
$table->id();
$table->timestamps();
$table->string('label');
$table->foreignId('user_id')->nullable()->constrained('users');
});
还有一个数据透视表使它成为一个多对多自引用模型。
public function up()
{
Schema::create('thing_thing', function (Blueprint $table) {
$table->id();
$table->timestamps();
$table->string('message')->nullable();
$table->unsignedBigInteger('parent_id')->nullable();
$table->unsignedBigInteger('child_id')->nullable();
$table->unique(['parent_id', 'child_id']);
$table->foreign('parent_id')->references('id')->on('things')->onDelete('cascade');
$table->foreign('child_id')->references('id')->on('things')->onDelete('cascade');
});
}
当我创建链接到此模型的 Nova 资源时,我想限制将 thing 附加到自身。例如,带有id = 1 的thing 不会出现在带有id = 1 的事物的附件选择器中。这是我的 Nova 资源:
public function fields(Request $request)
{
return [
ID::make(__('ID'), 'id')->sortable(),
Text::make('label'),
ID::make('user_id')->hideWhenUpdating()->hideWhenCreating(),
BelongsToMany::make('Trees', 'trees'),
BelongsToMany::make('Things', 'childOf'),
BelongsToMany::make('Things', 'parentOf')
];
}
【问题讨论】:
标签: php laravel many-to-many laravel-nova self-reference