【问题标题】:Laravel Nova reducting Select options or injecting clauses to queryLaravel Nova 减少 Select 选项或注入子句进行查询
【发布时间】:2020-03-15 15:55:21
【问题描述】:

我有一个组织模型和一个合同模型

在这里

class Contract extends Model {

    public function organisation() {
        return $this->belongsTo(Organisation::class, 'organisation_id', 'id')->where('is_self',1);
    }

}

如何让 Laravel Nova 只看到 BelongsTo 字段中 is_self=1 的组织。是否有注入子句查询的功能,这里选择哪些形式?

这就是我所说的 BelongsTo

BelongsTo::make('Organisation', 'organisation', Organisation::class)
    ->rules('required', 'exists:organisations,id'),

【问题讨论】:

    标签: laravel-nova


    【解决方案1】:

    【讨论】:

    • 如我所见,这将过滤与模型的所有关系,例如我的组织。但是在这种确切的形式中,我需要使用两次关系,第一次过滤 is_self==1,另一个过滤 is_self !=1 或者我弄错了,我可以指定在什么情况下应该使用确切的方法?
    • 也许我误解了你的问题。我以为您只想拥有在 BelongsTo 中具有 is_self 属性和值 1 的组织。你能详细说明吗? -1分别在哪里需要另一种形式?
    • 不过,也许我的第二个回答会帮助你。
    • 例如我的合同有两个方面,客户和卖方,他们都是组织,但是卖方是我们的组织之一并且有标志“is_self == 1”,但是客户是组织也是如此,但使用“is_self!= 1”。合同 CRUD 表单必须同时指定客户和卖方。就是这样
    【解决方案2】:

    您也不需要坚持BelongsTo 字段。也许Select 字段适合您的情况?

    Select::make('is_self', 'organisation_id')
        ->options(function() {
            Organisation::whereIsSelf(1)->pluck('name', 'id')->toArray();
        })
    

    此代码未经测试,但我在我的 Nova 应用程序中使用类似的选择没有问题。

    【讨论】:

    • 谢谢,选择工作正常,但我正在寻找更可爱的方式。在 github 上作为功能请求添加,但感谢帮助
    猜你喜欢
    • 1970-01-01
    • 2019-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2014-02-23
    • 1970-01-01
    相关资源
    最近更新 更多