是否可以从cakeHP中的超长文本列中提取有限数量的字符串



我正在使用cakeHP。我有services表,其中存在服务namedetails列。在details专栏中,我对每个服务都有很长的文本。因此,在这些services页面的列表中,我显示了所有services,包括details列中的first 200字符串。但问题是,我从details列获取所有数据,但只显示first 200 word。那么,默认情况下,是否有任何方法可以从每个details列中仅获取那些first 200字。这就是我展示每个细节栏的前200个单词的方式。

<?php
$onlyText= substr($service->details, 0, 200). ' ...';
echo $onlyText;
?>  

这就是我从services表中获取数据的方式。

$services = $this->Services->find('all')->get()

我并没有尝试任何来自查询端的东西,因为到目前为止我还没有找到任何方法。

尝试:

$services = $this->Services
->find()
->select(['id', 'title', 'created'])
->select(['truncated_details' => 'SUBSTRING(details, 0, 200)']);
// SELECT id, AS Services_id, SUBSTRING(details, 0, 200) AS truncated_details ...

然后使用:

foreach ($services as $service) {
echo h($service->truncated_details);
}

其他帮助:

  • https://api.cakephp.org/4.2/class-Cake.ORM.Query.html#select((
  • https://book.cakephp.org/4/en/core-libraries/text.html#truncating-文本
  • https://www.w3resource.com/mysql/string-functions/mysql-substring-function.php

最新更新