如何解决如何同时使用 $dates 数组和 Factory
public function deFinition()
{
$startDate = Carbon::createFromFormat('Y',$this->faker->year);
$endDate = $startDate->addYear();
return [
'name' => $startDate->year,'start_date' => $startDate->format('Y-m-d'),'end_date' => $endDate->format('Y-m-d'),];
}
[
'name' => 2020,'start_date' => '2020-01-30','end_date' => '2021-01-30'
]
以上按预期工作,直到出现返回 start_date
字段和 end_date
字段的要求。所以在我的模型中我添加了:
protected $dates = ['created_at','updated_at','start_date','end_date'];
在我的验证器中,我验证格式为 Y-m-d
。
public function rules()
{
return [
'name' => 'required|unique:academic_years','start_date' => 'required|date_format:Y-m-d|before_or_equal:end_date','end_date' => 'required|date_format:Y-m-d',];
}
我也有以下测试:
public function should_throw_error_if_date_format_is_invalid()
{
Permission::factory()->state(['name' => 'create academic year'])->create();
$user = User::factory()->create();
$user->givePermissionTo('create academic year');
$this->actingAs($user,'api')->postJson('/api/academic-years',[
'name' => $this->faker->year,'start_date' => '01-01-2019','end_date' => '2019-01-01'
])->assertStatus(422);
$this->actingAs($user,'end_date' => '01-01-2019','start_date' => '2019-01-01'
])->assertStatus(422);
}
测试失败,但如果我删除 $dates
数组,测试通过。在检查传递到请求中的对象时,我看到与 {"name":1995,"start_date":"1995-04-04T00:00:00.000000Z","end_date":"1995-04-04T00:00:00.000000Z"}
中提供的格式不同的日期格式 Factory
。
我该如何解决这个问题?
解决方法
由于 Faker
返回一个 DateTime-Object
,它不代表日期字符串,如 mysql
喜欢它 (Y-m-d H:i:s
)。
然而,您应该能够访问对象属性 date
以获得正确的字符串,如下所示:
试试这个
public function definition()
{
$startDate = Carbon::createFromFormat('Y',$this->faker->year);
$endDate = $startDate->addYear();
return [
'name' => $startDate->year,'start_date' => $startDate->format('Y-m-d H:i:s'),'end_date' => $endDate->format('Y-m-d H:i:s'),];
}
这应该返回这样的日期 string '1995-04-04T00:00:00.000000Z'
或
默认情况下,时间戳的格式为“Y-m-d H:i:s”。如果您需要自定义时间戳格式,请在模型上设置 $dateFormat 属性。此属性确定日期属性在数据库中的存储方式,以及模型序列化为数组或 JSON 时的格式:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Flight extends Model
{
/**
* The storage format of the model's date columns.
*
* @var string
*/
protected $dateFormat = 'U';
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。