我可以按对象ID而不是索引来获取记录

时间:2019-09-10 12:44:15

标签: octobercms

我的页面中有一个对象数组,可以使用数组中记录的索引显示它们。 示例:

{{ records[0].image}}

{{ records}}看起来像这样,

[
    {
        "id":"3",
        "name":"image one",
        "created_at":"2019-09-10 11:46:46",
        "updated_at":"2019-09-10 12:00:17",
        "deleted_at":null,
        "desc":"lady being driven",
        "image":"\/cropped-images\/chauffer1-86-2-708-593-1568116001.jpg"
    },
    {
        "id":"4",
        "name":"image 2",
        "created_at":"2019-09-10 11:47:38",
        "updated_at":"2019-09-10 12:01:02",
        "deleted_at":null,
        "desc":"driver",
        "image":"\/cropped-images\/chauffer2-5-3-817-764-1568116053.jpg"
    },
    {
        "id":"5",
        "name":"background",
        "created_at":"2019-09-10 12:17:02",
        "updated_at":"2019-09-10 12:17:02",
        "deleted_at":null,
        "desc":"background image of a city from above at night",
        "image":"\/nightcity.jpg"
    }
]

如何通过“ id”或任何键获取记录?

2 个答案:

答案 0 :(得分:0)

从php一侧,我想您的记录位于$ records数组中,因此我们需要重新排列它们

$relativeRecords = [];
foreach ($records as $record) {
    $relativeRecords[$record['id']] = $record;
    // $relativeRecords[$record->id] = $record; // use this if your source is object.
}
  

$relativeRecords现在看起来像这样

[
    [3] => {
        "id":"3",
        "name":"image one",
        "created_at":"2019-09-10 11:46:46",
        "updated_at":"2019-09-10 12:00:17",
        "deleted_at":null,
        "desc":"lady being driven",
        "image":"\/cropped-images\/chauffer1-86-2-708-593-1568116001.jpg"
    }

    ....
  

,现在您可以像{{ records[3].image }}

一样访问它们

如有任何疑问,请发表评论

答案 1 :(得分:0)

以下是后续回答,以提供更多解释。可以说模型记录是对象,可以用雄辩的集合来检索。使用Twig标记(不是怪异的标记,而是不错的标记),您可以处理类似数组的对象。在后端,您正在使用集合(超级阵列)。

所以我喜欢在记录内调用数据的属性和值,而不是键和值。我这样做是因为每个数组都有一个键值。该数组[ [ 'id' => 1, 'name'=> 'something' ] ]可以通过foreach循环{% for item in array %}或键索引{{ array[0] }}与Twig一起使用。现在,我可以用点符号或键符号[]指定要选择的属性。到目前为止,使用Twig还​​是很简单。

现在我该如何制定标准并选择集合中的特定记录。 Twig foreach循环的工作原理就像您所做的{% if the record.id == '3' %}。但是您也可以生成一个组件函数来执行此操作。在为插件创建组件之后,建议不要使用构建器记录组件。

在我的Component.php中,我具有此功能。

public function getRecord($id) {
    $record = Model::where('id', $id)->first();
    return $record;
}

在我的Twig标记页面中,我具有:请注意,使用 SELF 指定组件。如果要在CMS页面中进行扩展,则会显示{{ componentAlias.getRecord(3) }}

{{ __SELF__.getRecord(3).image }}