🔥 在查询中定义转换
发布时间:作者: Paul Redmond
Laravel 有 Eloquent 属性和自定义转换。但您是否知道 查询时转换?它在 Laravel 文档中有所描述,并且由 Aaron Francis 美妙地诠释。
所以,我听说你们都喜欢在 ORM 中使用类型。
— Aaron Francis (@aarondfrancis) 2023 年 6 月 6 日
Laravel 允许您在模型级别定义转换,以处理将值转换为其本机类型。
更有趣的是,它还允许您在查询时定义它们,因此您不会牺牲 SQL 的强大功能💅 pic.twitter.com/rTwT3OmZGJ
假设在 Laravel 文档中给出以下查询
use App\Models\Post;use App\Models\User; $users = User::select([ 'users.*', 'last_posted_at' => Post::selectRaw('MAX(created_at)') ->whereColumn('user_id', 'users.id')])->get();
您可以使用 withCasts()
方法在查询时定义转换,这为您提供了复杂 SQL 查询的强大功能,同时仍然可以使用转换。
$users = User::select([ 'users.*', 'last_posted_at' => Post::selectRaw('MAX(created_at)') ->whereColumn('user_id', 'users.id')])->withCasts([ 'last_posted_at' => 'datetime'])->get(); $user->last_posted_at; // DateTime
如果您想了解更多有关转换的信息,请查看 Eloquent 属性转换 和 Eloquent 自定义转换。我还建议您查看 Aaron 的 MySQL 开发人员课程。