我正在使用cakeHP。我有services
表,其中存在服务name
和details
列。在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