这是我试图实现的目标,但我无法以某种方式弄清楚如何链接和分散呼叫。我有两个属性birthday,hire_date当值为空时返回 TODAYS 日期,当顶部的 while 循环被定义时。while 循环中的以下插入定义为 0000-00-00 这正是我想要的,但我不希望在 Importer 类中定义birthday和验证:hire_date $obj = $this->parseLine(utf8_encode($lines[$index])); $arr = $this->mapObject($obj); $record = $this->getRecord($obj); if ($record) { if ($obj->updated_date > $record->updated_date || $mode === 'refresh') { if (empty($obj->birthday)) { $record->fill([ 'birthday' => '' ]); unset($arr['birthday']); } if (empty($obj->hire_date)) { $record->fill([ 'hire_date' => '' ]); unset($arr['hire_date']); } $record->fill($arr); } else { $record->timestamps = false; } $record->deleted_at = null; } else { $record = $this->createRecord($arr); } $record->touched_at = $now; $record->save();我想要实现的目标:无论如何,我可以中断以下内容: if (empty($obj->birthday)) { $record->fill([ 'birthday' => '' ]); unset($arr['birthday']); } if (empty($obj->hire_date)) { $record->fill([ 'hire_date' => '' ]); unset($arr['hire_date']); } $record->fill($arr);并将我的解析器中的方法定义为:return (object)[ 'birthday' => ['function/method'], ];所有帮助将不胜感激!
1 回答
MYYA
TA贡献1868条经验 获得超4个赞
Eloquent 模型中的 fill 方法接受数组作为唯一参数。因此,mapObject 方法应该返回一个数组。您的问题的解决方案如下:
public function mapObject($obj)
{
return [
'birthday' => empty($obj->birthday) ?
'' :
Carbon::parse($obj->birthday)->format('Y-m-d'),
'hire_date' => empty($obj->hire_date) ?
'' :
Carbon::parse($obj->hire_date)->format('Y-m-d'),
];
}
然后,在 Importer 类中,您所要做的就是使用以下方法调用以填充对象:
$record->fill($arr);
- 1 回答
- 0 关注
- 96 浏览
添加回答
举报
0/150
提交
取消