【发布时间】:2019-08-03 15:14:24
【问题描述】:
我尝试在观察者中使用 updateOrCreate 函数。 所以我有这个功能:
$transportpropremoyenaller = Transport::updateOrCreate(
['centre_id' => $gestionsejour->centre_id, 'allerouretour' =>
'Aller', 'date' => $gestionsejour->datedebut],
['ville' => \Config::get('constants.transport.0'), 'tarif' => '0']
);
我在 GestionsejourObserver 中使用这个功能:
public function created(Gestionsejour $gestionsejour)
{
return $this->addtransportpropremoyen($gestionsejour);
}
当我创建一个新对象时,updateOrCreate 从不更新,总是创建一个新对象。
Gestionsejour 模型是:
protected $fillable = [
'datefin',
'user_id',
'agrement',
'centre_id',
'datedebut',
'created_at',
'updated_at',
'deleted_at',
'dureesejour',
'periodesejour',
'complet',
];
public function centre()
{
return $this->belongsTo(Centre::class, 'centre_id');
}
public function getDatedebutAttribute($value)
{
return $value ? Carbon::parse($value)->format(config('panel.date_format')) : null;
}
public function setDatedebutAttribute($value)
{
$this->attributes['datedebut'] = $value ? Carbon::createFromFormat(config('panel.date_format'), $value)->format('Y-m-d') : null;
}
public function getDatefinAttribute($value)
{
return $value ? Carbon::parse($value)->format(config('panel.date_format')) : null;
}
public function setDatefinAttribute($value)
{
$this->attributes['datefin'] = $value ? Carbon::createFromFormat(config('panel.date_format'), $value)->format('Y-m-d') : null;
}
public function user()
{
return $this->belongsTo(User::class, 'user_id');
}
Myabe 无法发送 3 个属性或日期有问题。我不知道。我正在阅读 laravel 文档,但不明白这个简单函数有什么问题。
【问题讨论】:
-
在您的数据库中检查 datedebut,恕我直言,我认为即使在同一年、同一月和同一天,它们在时间部分也是不同的。如果是这样,更新部分不会一直找到相等的值。
-
数据库中的日期是日期格式,因此它们不是时间部分。只是 Mont 、 day 和 years。
标签: laravel laravel-5 eloquent