laravel - "Casting"功能 ($casts) 仅在 Laravel 中使用 Eloquent 时有效

标签 laravel eloquent laravel-query-builder

我尝试使用 $casts 更改模型中的日期格式:

protected $casts = [
    'created_at'  => 'datetime:Y-m-d H:i',
    'updated_at' => 'datetime:Y-m-d H:i'
];

当我使用 Eloquent 检索数据时它起作用:

$clients = Client::all();
return $clients;

但它不适用于查询生成器!

$clients = DB::table('clients')->get();
return $clients;

最佳答案

在查询生成器中,您使用的是 DB::table,它不使用 Laravel 模型,并且您正在将此转换代码写入 Laravel 模型。显然它永远不会起作用。它们是苹果和橙子。

如果您使用强制转换代码,Laravel 仅在获取模型并使用此字段时运行此代码。在此之前它不会更改值。

你想在那里实现什么目标?如果您给我们更详细的代码,我会帮助您。

关于laravel - "Casting"功能 ($casts) 仅在 Laravel 中使用 Eloquent 时有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71301744/

相关文章:

php - 如果使用 dd 方法,Laravel 5.4 session 不会被设置

mysql - Laravel 5.1,Eloquent,ManyToMany 和评论

php - 如何在 Laravel Eloquent 中使用带有子查询的内连接

php - 有条件地构建 Eloquent 查询

php - Laravel 中的重叠日期

php - Laravel Blade 如何使用@show Action 打印出 uri

php - CSS :last-child using on Laravel @foreach

php - 用 laravel 和 eloquent 处理 TimeZone

mysql - Laravel 5.2 发送私信报错 SQLSTATE[42S22] : Column not found: 1054 Unknown column 'user_id' in 'field list'

mysql - 从查询构建器转换为具有 3 个表的 Eloquent 模型