Laravel méthode save() renvoie true, mais pas de mise à jour des enregistrements

Je suis en utilisant Éloquent de mettre à jour mon tableau Occasion,

Occasion Modèle

<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class Opportunity extends Model {
protected $primaryKey = 'OpportunityID';
protected $table = 'opportunitys';
//relationships
public function csfs()
{
return $this->hasMany('App\Csf', 'opportunityID');
}
public function benefits()
{
return $this->hasMany('App\Benefit', 'opportunityID');
}
public function risks()
{
return $this->hasMany('App\Risk', 'opportunityID');
}
public function projects()
{
return $this->belongsTo('App\Project', 'projectID');
}
public static function createNewOpportunity($input, $projectID)
{
$opportunity = new Opportunity;
$opportunity->value = $input['value'];
$opportunity->margin = $input['margin'];
$opportunity->duration = $input['duration'];
$opportunity->tender_type = $input['tender_type'];
$opportunity->likelihood_of_success = $input['likelihood_of_success'];
$opportunity->scope_of_work = $input['scope_of_work'];
$opportunity->deliverables = $input['deliverables'];
$opportunity->projectID = $projectID;
$opportunity->high_level_background = $input['high_level_background'];
if($opportunity->save())
{
Opportunity::leadSalesOppComplete($projectID);
return true;
};
}
public static function leadSalesOppComplete($projectID)
{
$task = Lead::where('projectID', '=', $projectID)->first();
$task->sales_opp = true;
return $task->save();
}

}

public function updateOpportunity(Request $request, $id) {

- Je obtenir de l'id et de trouver l'occasion.

$something = Opportunity::find($id);

Je suis mort et sous-évaluées, et je reçois ce

Opportunity {#259 
#primaryKey: "OpportunityID"
#table: "opportunitys"
#connection: null
#perPage: 15
+incrementing: true
+timestamps: true
#attributes: array:12 [▼
"opportunityID" => 11
"value" => 0
"margin" => 0
"tender_type" => ""
"likelihood_of_success" => 0
"high_level_background" => ""
"scope_of_work" => ""
"deliverables" => ""
"duration" => ""
"projectID" => 6
"created_at" => "2015-03-11 17:45:47"
"updated_at" => "2015-03-11 17:45:47"
]
#original: array:12 [▶]
#relations: []
#hidden: []
#visible: []
#appends: []
#fillable: []
#guarded: array:1 [▶]
#dates: []
#casts: []
#touches: []
#observables: []
#with: []
#morphClass: null
+exists: true
}

Ce qui est correct. J'ai ensuite mise à jour de ces avec

    $something->margin = $request['margin'];
$something->duration = $request['duration'];
$something->tender_type = $request['tender_type'];
$something->likelihood_of_success = $request['likelihood_of_success'];
$something->scope_of_work = $request['scope_of_work'];
$something->deliverables = $request['deliverables'];
$something->high_level_background = $request['high_level_background'];

Maintenant, si je meurs et de vidage-je obtenir

Opportunity {#259 
#primaryKey: "OpportunityID"
#table: "opportunitys"
#connection: null
#perPage: 15
+incrementing: true
+timestamps: true
#attributes: array:12 [▼
"opportunityID" => 11
"value" => "25000"
"margin" => "0"
"tender_type" => "Proposal"
"likelihood_of_success" => "0"
"high_level_background" => ""
"scope_of_work" => ""
"deliverables" => ""
"duration" => ""
"projectID" => 6
"created_at" => "2015-03-11 17:45:47"
"updated_at" => "2015-03-11 17:45:47"
]
#original: array:12 [▼
"opportunityID" => 11
"value" => 0
"margin" => 0
"tender_type" => ""
"likelihood_of_success" => 0
"high_level_background" => ""
"scope_of_work" => ""
"deliverables" => ""
"duration" => ""
"projectID" => 6
"created_at" => "2015-03-11 17:45:47"
"updated_at" => "2015-03-11 17:45:47"
]
#relations: []
#hidden: []
#visible: []
#appends: []
#fillable: []
#guarded: array:1 [▶]
#dates: []
#casts: []
#touches: []
#observables: []
#with: []
#morphClass: null
+exists: true
}

J'ai seulement changé la valeur qui montre le changement.

J'ai

$something->save();

Elle renvoie true lorsque je mourrai, et le vidage.

Mais pas les enregistrements sont modifiés dans la base de données.

Des idées?

deux images de bricoler

Laravel méthode save() renvoie true, mais pas de mise à jour des enregistrements

Laravel méthode save() renvoie true, mais pas de mise à jour des enregistrements

Laravel méthode save() renvoie true, mais pas de mise à jour des enregistrements

  • Qu'est-ce que le tableau $demande? Toutes les valeurs en elle?
  • Dans laravel-5 vous utilisez la Demande de la classe, sur tous les postes, qui est similaire à l'aide de l'ancienne Entrée dans laravel 4.2
  • Si c'est l'instance injectée de la Demande, essayez d'obtenir la valeur en appelant input() au lieu de cela, comme $request->input ("marge").
  • Merci, mais les valeurs sont le travail à partir de la demande tableau. Les 2500 qui est entré dans le formulaire, est ajouté à la collection de l' $request['valeur']. Ce problème se produit lorsque les données sont modifiées, et ensuite de la méthode d'enregistrement est utilisé. Ce n'est pas la mise à jour de la base de données même si c'est de retourner true
  • Comment voulez-vous vérifier que le dossier n'est pas modifié dans la base de données?
  • C'est délicat. Mais je pense que le problème est lié à vous jj() la méthode save(). Je soupçonne jj() s'arrête tout simplement le script php à partir de l'exécution. Comment ne pas interrompre il enregistre, et vérifier la base de données directement?
  • Eh bien j'ai d'abord remarqué qu'il n'avait pas changé lorsque le modèle de formulaire de liaison de ne pas tirer à travers les nouvelles données. J'ai regardé dans PHPMYADMIN et la valeur est toujours 0. C'est vraiment étrange, que je peux créer de nouveaux enregistrements.
  • Je n'utilise que le DD pour le diagnostic de fins que je suis en train de trouver la route du problème. Une fois l'enregistrement terminé, cela renvoie à un autre tableau de bord.
  • Très intéressante. Peut-être il y a quelques DB transaction en cours lorsque vous essayez de mettre à jour l'enregistrement? Aussi, pouvez-vous essayer de mettre à jour le dossier de php artisan tinker?
  • J'ai chargé bricoleur, mais pas sûr de la façon d'exécuter la commande dans le bricoleur. Jamais utilisé
  • Suffit de taper ce que vous saisissez dans le contrôleur: trouver un modèle, d'assigner une nouvelle valeur à un champ puis enregistrez-le.
  • Bon, je l'ai fait. J'type $opportunité = Occasion::find(11); et je reçois des appels Occasion pas trouvé. Il existe bel et bien.
  • D'accord, c'est le nom espacés donc j'ai tapé App\Opportunité et cela a fonctionné. nu avec moi désolé
  • Vous devriez peut-être le modèle de l'espace de noms car, par défaut, Laravel 5 déclare modèles en vertu de l'Application de l'espace de noms.
  • Bon eh bien, j'ai exécuté les commandes de bricoler et de l'enregistrer retourné véritable. Il n'a toujours pas de mise à jour de ma base de données
  • J'ai ajouté les captures d'écran
  • Êtes-vous sûr que vous regardez à la base de données correcte? Peut-être que c'est une mauvaise URL dans le navigateur où PHPMyAdmin est ouvert ou mal DB nom? Aussi, exécuter veuillez var_dump(App\Oportunity::find(11)) après l'enregistrer.
  • Accord qui va le faire pour vous maintenant. J'ai juste couru une mise à jour sur un autre modèle de la fonction et de la mise à jour parfaitement. Un peu de soulagement, comme cela semble être la seule de ce modèle.
  • Ajout de la capture d'écran
  • Type de l' value champ est string(1). Essayez d'enregistrer 5, par exemple: $opp->value = "5"; $opp->save()
  • D'accord, je l'ai fait, et toujours pas d'enregistrer. La seule raison pour laquelle la valeur est maintenant une chaîne de caractères, c'est que j'ai changé la structure de la base de données, à la chaîne de int, vérifiez qu'il était en communication avec le droit de l'un, et de deux ce n'était pas une question de type de données.
  • Salut les gars, j'ai résolu le problème, c'est vraiment étrange en fait que je suis capable d'ajouter à l'aide de ce modèle. L'ID qui a été déclaré à l'Occasion de la classe a été protégés $primaryKey = "OpportunityID"; et la clé doit être opportunityID. Ce que je ne comprends pas, c'est pourquoi je suis en mesure de sauver cette erreur et de récupérer le modèle
  • Cela pourrait-il être un bug dans Éloquent?
  • N'hésitez pas à ajouter à la réponse, et de prendre quelques bons points, j'apprécie vraiment l'aider
  • Ne vous inquiétez pas à propos de points. Je ne suis pas sûr au sujet d'un bug, mais je pense que vous pouvez demander à ce sujet dans le n ° laravel-dev conf sur IRC.