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

使用 hasMany 时的 Laravel Nova 404

来自分类Dev

Laravel nova使用belongsTo保存资源字段

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

Laravel Nova限制viewAny()

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

在《 Laravel Nova》中BelongsTo的翻译

来自分类Dev

Laravel Nova限制资源视图

来自分类Dev

限制Laravel Nova中的访问

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

隐藏镜头laravel nova中的动作

来自分类Dev

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

来自分类Dev

Laravel Nova Multiselect编辑不起作用

来自分类Dev

Laravel Nova,更改搜索结果 HTML

Related 相关文章

  1. 1

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

  2. 2

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

  3. 3

    使用 hasMany 时的 Laravel Nova 404

  4. 4

    Laravel nova使用belongsTo保存资源字段

  5. 5

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

  6. 6

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

  7. 7

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

  8. 8

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

  9. 9

    Laravel Nova限制viewAny()

  10. 10

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

  11. 11

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

  12. 12

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

  13. 13

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

  14. 14

    在《 Laravel Nova》中BelongsTo的翻译

  15. 15

    Laravel Nova限制资源视图

  16. 16

    限制Laravel Nova中的访问

  17. 17

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

  18. 18

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

  19. 19

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

  20. 20

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

  21. 21

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

  22. 22

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

  23. 23

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

  24. 24

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

  25. 25

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

  26. 26

    隐藏镜头laravel nova中的动作

  27. 27

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

  28. 28

    Laravel Nova Multiselect编辑不起作用

  29. 29

    Laravel Nova,更改搜索结果 HTML

热门标签

归档