我遇到的一个问题是我没有找到解决办法:更新项目时,我必须将其更新到模型不同的第二个数据库中(例如:请求发送输入文本“ title”并且必须将其记录到第二个数据库中的“ intitule”字段中。 在我的第一个数据库中,请求适合模型并且没有问题,但是在第二个中,更新查询没有发生。 我试图更改set mutator失败。 您是否遇到过这个问题并且已经解决了吗?
这是我的模特:
<?php
namespace App\Old;
use Illuminate\Database\Eloquent\Model;
class Stage extends Model
{
// Ce modèle est celui de l'ancienne base de donnée
// changement de connexion
protected $connection = 'mysql2';
//la nom de la table ne correspond pas au nom par défaut attendu par le framework au regard de du nom du modèle
protected $table = 'stages';
//changement de clés primaire par défaut attendu par le framework
protected $primaryKey = 'id_stages';
// Ces champs ne sont pas modifiables
//protected $guarded = ['id'];
protected $fillable = ['intitule_stage'];
//On ne remplit pas de champs created_at et updated_at par défaut ds Eloquent
public $timestamps = false;
public function setTitleAttribute($value){
$this->attribute['intitule_stage']=$value;
}
}
这是控制器
public function update(Request $request, Formation $formation)
{
//dd($request);
$requestFormation = FormationRequest::createFrom($request);
$requestStage = StageRequest::createFrom($request);
//dd($requestFormation);
$formation->update($requestFormation->all());
$stage = Stage::findOrFail($formation->id);
if ($this->updateStage($requestStage, $stage)) {
session()->flash('success_message', 'Modification enregistrée');
return redirect(route('formation.index'));
}
}
private function updateStage(StageRequest $request,Stage $stage):bool {
//dd($request->input('titre'));
return $stage->update($request->all());
}
感谢您的帮助
答案 0 :(得分:0)
我认为快速简便的解决方案是将$request
中的值放入新数组。
$request->all()
将返回一个数组。因此,您可以获取所需的数据,将它们放入另一个数组中,然后推送更新方法。
private function updateStage(StageRequest $request,Stage $stage):bool
{
return $stage->update([
'inititle' => $request->input('titre'),
...
]);
}