You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel接口返回文章时如何给description字段添加str_limit长度限制

方案1:直接修改分页集合内的字段

paginate() 返回的是 LengthAwarePaginator 实例,其内部挂载的数据集支持直接修改,遍历过程中直接给模型属性赋值即可生效:

use Illuminate\Support\Str;

public function showAllArticles(){
    $data = Article::paginate(10);
    $data->each(function ($article) {
        // 按需求调整截断长度,示例为100字符,超出后末尾拼接省略号
        $article->description = Str::limit($article->description, 100, '...');
    });
    return $data;
}

方案2:定义模型访问器(全局生效)

如果所有返回文章的场景都需要截断description,可以直接在Article模型中定义访问器,无需每次接口单独处理:
在app/Models/Article.php中添加代码:

use Illuminate\Support\Str;

public function getDescriptionAttribute($value)
{
    return Str::limit($value, 100, '...');
}

后续接口直接返回分页对象即可,字段会自动做截断处理:

public function showAllArticles(){
    return Article::paginate(10);
}

如果部分场景需要获取完整原文,可以额外定义单独的访问器返回原始值,或者给访问器加判断逻辑适配不同场景。

方案3:使用API资源(规范解耦,推荐生产环境使用)

如果接口返回字段需要大量定制化处理,用API资源层统一管理返回格式是最优解:

  1. 生成资源文件
php artisan make:resource ArticleResource
  1. 编辑app/Http/Resources/ArticleResource.php定义返回格式:
use Illuminate\Support\Str;

public function toArray($request)
{
    return [
        'id' => $this->id,
        'title' => $this->title,
        'description' => Str::limit($this->description, 100, '...'),
        'created_at' => $this->created_at,
        // 其他需要返回的字段按需添加
    ];
}
  1. 接口中使用资源集合返回分页数据:
use App\Http\Resources\ArticleResource;

public function showAllArticles(){
    return ArticleResource::collection(Article::paginate(10));
}

该方案完全解耦模型逻辑和接口返回规则,后续调整返回格式只需修改资源文件即可,可维护性最高。


内容的提问来源于stack exchange,提问作者TheVVVil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 23:54:03