laravel nova-如何使用约束创建自我参照模型

戴维·J。

我有一个基于下表的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资源时,我想限制athing对其自身的附加因此,例如,thingwithid = 1不会出现在带有的事物的附件的选择器中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')
    ];
  }
分数

您可以通过App\Nova\RessourcerelatableQuery方法解决此问题只需在您的nova资源中覆盖该方法即可:

class Thing extends Resource {

    // ...

    public static function relatableQuery(NovaRequest $request, $query)
    {
        // Make sure you only apply the filter to the things-things relatable query
        if( $request->route('resource') === 'things' ) {
            $currentId = $request->route('resourceId');
            $query->where('id', '!=', $currentId);
        }
        return $query
    }
}

您可以在这里找到文档

另外,您可能希望在迁移中使的列组合parent_idchild_id唯一,以进一步确保唯一性。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

创建资源时如何要求附加相关资源-Laravel Nova

来自分类Dev

如何生成动态Laravel Nova选择字段?

来自分类Dev

Laravel Nova限制viewAny()

来自分类Dev

从Laravel / Laravel Nova中的另一个模型返回数据

来自分类Dev

在《 Laravel Nova》中BelongsTo的翻译

来自分类Dev

如何在Laravel Nova中显示加密的字段值?

来自分类Dev

每个用户如何使用Laravel Nova拥有私有数据的组织?

来自分类Dev

如何过滤Laravel Nova中使用BelongsTo字段的选择列表?

来自分类Dev

我如何在Laravel Nova中禁用全局搜索中的操作

来自分类Dev

如何将数据从ToolServiceProvider传递到Laravel Nova中的导航刀片?

来自分类Dev

隐藏镜头laravel nova中的动作

来自分类Dev

Laravel Nova使资源仅显示用户的数据

来自分类Dev

Laravel Nova限制资源视图

来自分类Dev

Laravel Nova Multiselect编辑不起作用

来自分类Dev

如何从Laravel Nova中的资源列表中删除所有复选框?

来自分类Dev

限制Laravel Nova中的访问

来自分类Dev

Laravel Nova:仅观察模型并根据Nova的请求进行操作

来自分类Dev

laravel nova-如何使用约束创建自我参照模型

来自分类Dev

创建资源时如何要求附加相关资源-Laravel Nova

来自分类Dev

Laravel Nova,更改搜索结果 HTML

来自分类Dev

Laravel Nova HasOne 关系在单个面板中查看和编辑 2 个模型

来自分类Dev

Laravel Nova:在 Action 中使用 2+ 个字段返回 404

来自分类Dev

使用 hasMany 时的 Laravel Nova 404

来自分类Dev

Laravel Nova:将字段动态绑定到模型上的 JSON 属性

来自分类Dev

Laravel nova使用belongsTo保存资源字段

来自分类Dev

Laravel Nova 在创建时使用另一个字段的内容填充字段

来自分类Dev

Laravel 新星 | 存储来自 Laravel nova 资源的布尔字段时如何传递默认值

来自分类Dev

在laravel nova中创建动态数量的卡片

来自分类Dev

如何更改 Laravel Nova 指标的结束日期?

Related 相关文章

  1. 1

    创建资源时如何要求附加相关资源-Laravel Nova

  2. 2

    如何生成动态Laravel Nova选择字段?

  3. 3

    Laravel Nova限制viewAny()

  4. 4

    从Laravel / Laravel Nova中的另一个模型返回数据

  5. 5

    在《 Laravel Nova》中BelongsTo的翻译

  6. 6

    如何在Laravel Nova中显示加密的字段值?

  7. 7

    每个用户如何使用Laravel Nova拥有私有数据的组织?

  8. 8

    如何过滤Laravel Nova中使用BelongsTo字段的选择列表?

  9. 9

    我如何在Laravel Nova中禁用全局搜索中的操作

  10. 10

    如何将数据从ToolServiceProvider传递到Laravel Nova中的导航刀片?

  11. 11

    隐藏镜头laravel nova中的动作

  12. 12

    Laravel Nova使资源仅显示用户的数据

  13. 13

    Laravel Nova限制资源视图

  14. 14

    Laravel Nova Multiselect编辑不起作用

  15. 15

    如何从Laravel Nova中的资源列表中删除所有复选框?

  16. 16

    限制Laravel Nova中的访问

  17. 17

    Laravel Nova:仅观察模型并根据Nova的请求进行操作

  18. 18

    laravel nova-如何使用约束创建自我参照模型

  19. 19

    创建资源时如何要求附加相关资源-Laravel Nova

  20. 20

    Laravel Nova,更改搜索结果 HTML

  21. 21

    Laravel Nova HasOne 关系在单个面板中查看和编辑 2 个模型

  22. 22

    Laravel Nova:在 Action 中使用 2+ 个字段返回 404

  23. 23

    使用 hasMany 时的 Laravel Nova 404

  24. 24

    Laravel Nova:将字段动态绑定到模型上的 JSON 属性

  25. 25

    Laravel nova使用belongsTo保存资源字段

  26. 26

    Laravel Nova 在创建时使用另一个字段的内容填充字段

  27. 27

    Laravel 新星 | 存储来自 Laravel nova 资源的布尔字段时如何传递默认值

  28. 28

    在laravel nova中创建动态数量的卡片

  29. 29

    如何更改 Laravel Nova 指标的结束日期?

热门标签

归档