OctoberCMS columns.yaml VALUE FROM 有多个字段

OctoberCMS columns.yaml VALUE FROM with multiple fields

我在 OctoberCMS 中使用 Builder 插件创建了一个插件,其中我有 columns.yaml 文件。

在一个名为 property_id 的字段中,我有一个字段为 VALUE FROM,它要求添加我的 table 的字段名称,因此我有添加了一个名为 street_number.

但我想在那里连接多个字段。如下所示。

CONCAT(street_number, ' ', address)

但这不起作用。我也尝试过其他方法,但还是不行。

有人可以指导我如何完成这个吗?

此外,如果这些字段各自的值存在于 table 中,那么如果这些字段得到 concat 就更好了。

这就是我的 columns.yaml 文件的样子。

columns:
    property_id:
        label: Property
        type: text
        searchable: true
        sortable: false
        relation: Property
        valueFrom: street_number
    start_datetime:
        label: 'Start Date Time'
        type: datetime
        searchable: true
        sortable: true
    end_datetime:
        label: 'End Date Time'
        type: datetime
        searchable: true
        sortable: true
    status:
        label: Status
        type: number
        searchable: true
        sortable: true
        select: 'CASE WHEN (status =  ''1'' ) THEN ''Active'' ELSE ''Inactive'' END'

谢谢

由于此处涉及逻辑,您可能只想使用此处详述的自定义列类型 https://octobercms.com/docs/backend/lists#custom-column-types。我不想在 yaml 文件中放入太多逻辑。

编辑

OP 添加了一些示例代码来准确显示我上面在他的评论中提到的内容

好的伙计们,

感谢上面的 by Pratyush Pundir,我想出了一个解决方案。这是我为实现这一目标所做的工作。

更新了 columns.yaml 文件中的以下代码块。

columns:
    property_id:
        label: Property
        type: property_details
        searchable: true
        sortable: false
        relation: Property

在此处添加了type: property_details

打开并更新了我的 Plugin.php 文件并添加了以下行。

<?php namespace Technobrave\Homeopenintegration;

use System\Classes\PluginBase;


use technobrave\Properties\Models\Property as Property;


class Plugin extends PluginBase
{


    public function registerListColumnTypes()
        {

            return [
                // A local method, i.e $this->evalUppercaseListColumn()
                'property_details' => [$this, 'evalPropertyDetailsListColumn'],        
            ];
        }


    public function evalPropertyDetailsListColumn($value, $column, $record)
    {
        $current_property = Property::where('id', $record->property_id)->first();
        return $current_property->lot;

    }
}

感谢您的努力和帮助。