首页 > 解决方案 > Laravel 在关系调用中投射一个字段

问题描述

当我调用模型集合时,我有时会将日期字段转换为特定格式:

$shifts = Shift::where('some_field', 'some_value')
    ->withLinkedShifts()
    ->withCasts([
       'date' => 'date:Y-m-d',
       ...
    ])->get();

“withLinkedShifts()”作用域调用了一个名为linked_shifts的关系,它是与被调用实例相关的班次实例。此转换适用于被调用模型的日期字段,但它不适用于linked_shifts关系中班次的日期字段。如何在linked_shifts关系中投射日期而无需编辑模型?

标签: phplaravel

解决方案


linked_shifts模型本身中,您应该指出日期:

class LinkedShifts extends Model {
    protected $dates = [
        'date'
    ];

    // OR

    protected $casts = [
        'date' => 'date:Y-m-d'
    ];
}

推荐阅读