两个被忽视的 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');
使用 visible 与 hidden 控制序列化
Laravel 提供了 visible 和 hidden 属性,用于控制模型转换为数组或 JSON 时哪些属性会出现。
这些属性同样接受关系名称,允许你在序列化时显式地显示或隐藏关系。
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
/**
* 在数组中应可见的属性。
*
* @var array
*/
protected $visible = [
'name',
'email',
'created_at',
'comments', // 一对多关系
];
}