两个被忽视的 Laravel 功能:`fresh()` 和属性可见性

发布: (2025年12月13日 GMT+8 19:32)
2 min read
原文: Dev.to

Source: Dev.to

使用 fresh() 重新加载模型

Laravel 的 fresh 方法可以让你从数据库重新加载单个模型或整个集合,确保使用的是最新的数据。

你也可以向 fresh 传入关系名称,这些关系会与模型一起被重新加载。

use App\Models\User;

$users = User::has('comments', 1)->with('comments')->get();

// 本地修改第一条评论(未持久化)
$users->first()->comments->first()->body = 'Updated body';

// 从数据库重新加载用户及其评论
$users = $users->fresh('comments');

使用 visiblehidden 控制序列化

Laravel 提供了 visiblehidden 属性,用于控制模型转换为数组或 JSON 时哪些属性会出现。

这些属性同样接受关系名称,允许你在序列化时显式地显示或隐藏关系。

use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    /**
     * 在数组中应可见的属性。
     *
     * @var array
     */
    protected $visible = [
        'name',
        'email',
        'created_at',
        'comments', // 一对多关系
    ];
}

https://github.com/digging-code-blog/community-tips

Back to Blog

相关文章

阅读更多 »