這是我試圖實現的目標,但我無法以某種方式弄清楚如何鏈接和分散呼叫。我有兩個屬性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 關注
- 124 瀏覽
添加回答
舉報
0/150
提交
取消